1048 数字加密

注意点

  1. 高位的0要舍去

  2. 所有位都是0的情况输出一个0

代码

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

char a[101];
char b[101];
int main(){

	string s1,s2;
	int tmp;
	cin>>s1>>s2;
	for(int i=0;s1[i]!=NULL;i++){
		a[i+1]=s1[s1.length()-i-1];//1~s1.lenghth
	}
	for(int i=0;s2[i]!=NULL;i++){
		b[i+1]=s2[s2.length()-i-1];//1~s2.length
	}
	if(s1.length()>=s2.length()){
		for(int i=s2.length()+1;i<=s1.length();i++){
			b[i]='0';
		}
	}
	for(int i=1;i<=s1.length();i++){
		if(i%2==1){//奇数 
			tmp=(b[i]-'0'+a[i]-'0')%13;
			if(tmp<10){
				b[i]=tmp+'0';
			}
			else{
				if(tmp==10){
					b[i]='J';
				}
				if(tmp==11){
					b[i]='Q';
				}
				if(tmp==12){
					b[i]='K';
				}
			}
		}
		else{
			tmp=b[i]-a[i];
			if(tmp<0){
				b[i]=tmp+10+'0';
			}
			else{
				b[i]=tmp+'0';
			}
		}
	}
	int f=0;
	int max_len;
	if(s1.length()>=s2.length()){
		max_len=s1.length();
	}
	else{
		max_len=s2.length();
	}
	for(int i=max_len;i>=1;i--){
		if(b[i]!='0'){
			f=1;
		}
		if(f==1){
			cout<<b[i];
		}
		else if(f==0){
			continue;
		}	
	}
	if(f==0){
		cout<<0;
	}
    return 0;
}

posted @ 2022-07-09 17:32  qwasdasd  阅读(31)  评论(0)    收藏  举报