首页 > 其他 > 详细

1048 数字加密 (20分)

时间:2020-02-20 10:46:00      阅读:38      评论:0      收藏:0      [点我收藏+]
 

本题要求实现一种数字加密方法。首先固定一个加密用正整数 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 }

 

1048 数字加密 (20分)

原文:https://www.cnblogs.com/geyang/p/12334361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!