PAT B1048 数字加密

前言

传送门

正文


思路

见代码注释

参考题解

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
/*
首先用字符串读入A,B,用len记录二者较长的长度,再使用reverse函数(在algorithm头文件里)
对A和B进行翻转,遍历每一字符,按照题意进行计算加密后的每一位存入字符串res中,
再将字符串翻转后输出即可 
*/
int main(){
	string a,b,res;
	cin>>a>>b;
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());
	int lenA=a.size(),lenB=b.size();
	int len=lenA>lenB?lenA:lenB;//取较长的 
	for(int i=0;i<len;i++){
		int x,y;
		//字符数字转整型数字,注意此处的技巧相应位数没有字符的话就为0 
		x=i<lenA?a[i]-'0':0;
		y=i<lenB?b[i]-'0':0; 
		if(i%2==0){//奇数位 
			int temp=(x+y)%13;
			if(temp==10)res+='J';
			else if(temp==11)res+='Q';
			else if(temp==12)res+='K';
			else res+=temp+'0';
		}else{//偶数位 
			int temp=y-x;
			if(temp<0)temp+=10;
			res+=temp+'0'; 
		}
	}
	reverse(res.begin(),res.end());
	cout<<res<<endl;
	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务