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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章