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 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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