1048. 数字加密(20)
本题要求实现一种数字加密方法。首先固定一个加密用正整数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 <stdlib.h> 3 #include<string.h> 4 5 char a[101]; 6 char b[101]; 7 int main() 8 { 9 int i; 10 int lena,lenb,lenc; 11 int ji,sum; 12 scanf("%s%s",a,b); 13 lena = strlen(a); 14 lenb = strlen(b); 15 if( lena-lenb>0 ) //如果a比b长,在b前补'0' 16 { 17 lenc = lena-lenb; 18 for( i=lenb-1; i>=0; i--) 19 b[i+lenc] = b[i]; 20 for( i=0; i<lenc; i++) 21 b[i] = '0'; 22 } 23 else if( lenb-lena>0) //如果b比a长,在a前补'0' 24 { 25 lenc = lenb-lena; 26 for( i=lena-1; i>=0; i--) 27 a[i+lenc] = a[i]; 28 for( i=0; i<lenc; i++) 29 a[i] = '0'; 30 } 31 lena = strlen(a); 32 ji=1; //奇数标志,等于1表示奇数位 33 for( i=lena-1; i>=0; i--) 34 { 35 if( ji ) 36 { 37 sum = (( a[i]-'0')+( b[i]-'0'))%13; 38 if( sum==12 ) 39 b[i]='K'; 40 else if(sum==11) 41 b[i]='Q'; 42 else if( sum==10) 43 b[i]='J'; 44 else b[i]= sum+'0'; 45 ji = 0; 46 } 47 else 48 { 49 sum = b[i]- a[i]; 50 if( sum<0) sum += 10; 51 b[i]= sum+'0'; 52 ji = 1; 53 } 54 } 55 puts(b); 56 return 0; 57 }
在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!