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;
}
全部评论

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务