自己写的1048. 数字加密(20)

本文介绍了一种特殊的字符串处理算法,该算法通过一系列步骤将两个输入字符串进行转换,并最终输出一个新字符串。其中包括字符串反转、长度调整及奇偶位置字符的特定运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

char str[13] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K'}; 当要类型转化时,例如  算出来是1  但是要变成字符'1',那就创建一个char  数组 里面对应数字和字符。
123456789字符串  用  for(int i=0;i<len;i++) swap(s[i],s[len-1-i])  变成 987654321
在字符串末尾str后面添加多少X位,之后字符串长度变成len+X       str



对奇数位,对应位的数字相加后对13取余
——这里用J代表10、Q代表11、K代表12;


对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。
这里令个位为第1位。




输入样例:
1234567 368782971
输出样例:
3695Q8118


*/


#include<iostream>
#include<string>
using namespace std;


int main()
{
string a,b,c;
cin>>a>>b;


int lena,lenb;


lena=a.length();
lenb=b.length();


char str[13] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K'};
//////////////////////////////////////////////


for(int i=0;i<=lena/2-1;i++)
swap(a[i],a[lena-i-1]);    ////////////////////////


for(int i=0;i<=lenb/2-1;i++)
swap(b[i],b[lenb-1-i]);


if(lena>lenb)
{
b.append(lena-lenb,'0');     //////////////////////

}
else
{

a.append(lenb-lena,'0');       //a.length()=9
}


cout<<a<<endl;
cout<<b<<endl;







int f=a.length();


for(int i=0;i<f;i++)
{
int temp=0;
if(i%2!=0)
{
temp=(b[i]-'0')-(a[i]-'0');///////////////////////////
if(temp<0)temp=temp+10;


//c[i]=str[temp];会错误
c+=str[temp];             //////////////////////////
}


else
{
temp=((b[i]-'0')+(a[i]-'0'))%13;
//c[i]=str[temp];  会错误
c+=str[temp];//字符串连接  C+=要加入的字符



}

}


cout<<c;


return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值