1048 数字加密

Posted xwl3109377858

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1048 数字加密相关的知识,希望对你有一定的参考价值。

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

输入格式:

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

输出格式:

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

输入样例:

1234567 368782971

输出样例:

3695Q8118
 
思路:可以先讨论一下两个字符串的长度问题再模拟......
 
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<stdlib.h>
 5 int main()
 6 {
 7     char num1[101],num2[101];
 8     scanf("%s %s",num1,num2);
 9     int len1=strlen(num1);
10     int len2=strlen(num2);
11     int max=-1;
12     if(len1>max) 
13         max=len1;
14     if(len2>max)  
15         max=len2;
16     char str1[max],str2[max];
17     if(max==len1)
18     {
19         for(int i=0;i!=max;i++)
20             str1[i]=num1[max-i-1];
21         str1[max]=;
22         for(int i=0;i<len2;i++)
23             str2[i]=num2[len2-i-1];
24         for(int i=len2;i<max;i++)
25             str2[i]=0;
26         str2[max]=;
27     }
28     else if(max==len2&&len1!=len2)
29     {
30         for(int i=0;i!=max;i++)
31             str2[i]=num2[max-i-1];
32         str2[max]=;
33         for(int i=0;i<len1;i++)
34             str1[i]=num1[len1-i-1];
35         for(int i=len1;i<max;i++)
36             str1[i]=0;
37         str1[max]=;
38     }
39     int num[101];
40     int i,sum,t=0;
41     for(i=0;i<max;i++)
42     {
43         if(i%2==0)//ÆæÊýλ
44         {
45             sum=((str1[i]-0)+(str2[i]-0))%13;
46             num[t++]=sum;
47          } 
48          else if(i%2==1)
49          {
50              sum=(str2[i]-0)-(str1[i]-0);
51              if(sum<0)
52                sum=sum+10;
53              num[t++]=sum;
54          }
55     }
56     for(int i=t-1;i>=0;i--)
57     {
58         if(num[i]>=0&&num[i]<=9)
59             printf("%d",num[i]);
60         else if(num[i]==10)     
61             printf("J");
62         else if(num[i]==11)  
63             printf("Q");
64         else if(num[i]==12)   
65             printf("K");
66     }
67     return 0;
68 }

 

 

以上是关于1048 数字加密的主要内容,如果未能解决你的问题,请参考以下文章

PATB1048数字加密

1048. 数字加密(20)

1048 数字加密(20 分)

PAT 1048. 数字加密

PAT B1048 数字加密

1048 数字加密