1048 数字加密 (20分)

 

本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。

输入格式:

输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。

输出格式:

在一行中输出加密后的结果。

输入样例:

1234567 368782971
 

输出样例:

3695Q8118
 
作者: CHEN, Yue
单位: 浙江大学
时间限制: 400 ms
内存限制: 64 MB
 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 int main(){
 6     char a1[105]="1234567";
 7     char b1[105]="368782971";
 8     cin>>a1>>b1;
 9     char a[105]="";
10     char b[105]="";
11     int j=0,c=0;
12     int mix=0;
13     if(strlen(a1)>mix)
14         mix=strlen(a1);
15     if(strlen(b1)>mix)
16         mix=strlen(b1);
17     for(int i=strlen(b1)-1;i>=0;i--){        
18         b[j]=b1[i];
19         j++;
20     }
21     j=0;
22     for(int i=strlen(a1)-1;i>=0;i--){        
23         a[j]=a1[i];
24         j++;
25     }
26     for(int i=mix-1;i>=0;i--){
27         if(a[i]==0)
28             a[i]='0';
29         if(b[i]==0)
30             b[i]='0';
31         if((i+1)%2==0){                        
32             c=(b[i]-'0'-(a[i]-'0'));
33             if(c<0){
34                 c+=10;
35             }
36             cout<<c;
37         }else{
38             c=(a[i]-'0'+(b[i]-'0'))%13;
39             if(c<10)
40                 cout<<c;
41             else if(c==10)
42                 cout<<"J";
43             else if(c==11)
44                 cout<<"Q";
45             else if(c==12)
46                 cout<<"K";
47         }
48     }
49     //cout<<b<<"\n"<<a;
50     return 0;
51 }

猜你喜欢

转载自www.cnblogs.com/geyang/p/12334361.html