1048. 数字加密(20) PAT乙级真题
2017-12-07 11:05
531 查看
1048. 数字加密(20)
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
输出样例:
这道题一看到100位的正整数第一反应就应该是用字符串。然而它这里令个位为第1位,我们对这种一位位对应的字符处理又习惯从左边开始,所以我用了一个函数去使字符串颠倒过来。中间的过程就是按照题意模拟,我们需要在模拟的过程中注意的一点是A和B的位数可能不一样,因为我们把数字颠倒过来了,所以少的位数应该用0补上。下面是我的代码:
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
这道题一看到100位的正整数第一反应就应该是用字符串。然而它这里令个位为第1位,我们对这种一位位对应的字符处理又习惯从左边开始,所以我用了一个函数去使字符串颠倒过来。中间的过程就是按照题意模拟,我们需要在模拟的过程中注意的一点是A和B的位数可能不一样,因为我们把数字颠倒过来了,所以少的位数应该用0补上。下面是我的代码:
#include<stdio.h> #include<string.h> void Chuli(char a[]); void Xiangjia(char a[],char b[]); int main(void) { char a[101]={'0'},b[101]={'0'}; int i=0,j; do { scanf("%c",&a[i]); i++; }while(a[i-1]!=' '); a[i-1]='\0';i=0; do { scanf("%c",&b[i]); i++; }while(b[i-1]!='\n'); b[i-1]='\0'; Chuli(a);Chuli(b); Xiangjia(a,b); Chuli(b); puts(b); return 0; } /* 将数字颠倒过来 */ void Chuli(char a[]) { char m[101]; int s,i=0; s=strlen(a); for (;i < s/2;i++) { a[i]=a[i]+ a[s-i-1]; a[s-i-1]=a[i]- a[s-i-1]; a[i]=a[i]- a[s-i-1]; } } void Xiangjia(char a[],char b[]) { int i=0,c; do { if ( (a[i]<'0') || (a[i] >'9') ) a[i]='0'; if ( (b[i]<'0') || (b[i] >'9') ) b[i]='0'; c=a[i]-48; if (i%2==0) //奇数位 { c=(c+b[i]-48)%13; if (c==10) b[i]='J'; else if (c==11) b[i]='Q'; else if (c==12) b[i]='K'; else b[i]=c+48; } else //偶数位 { c=b[i]-48-c; if (c<0) c+=10; b[i]=c+48; } i++; }while((b[i]!='\0')||(a[i]!='\0')); }
相关文章推荐
- 1048. 数字加密(20)-浙大PAT乙级真题java实现
- 1048. 数字加密(20)-浙大PAT乙级真题
- pat乙级1048. 数字加密(20)
- [PAT乙级]1048. 数字加密(20)
- PAT乙级1048(C语言)-数字加密(20)
- PAT乙级—1048. 数字加密(20)-native
- PAT 乙级 1048. 数字加密(20)
- PAT乙级.1048. 数字加密(20)
- pat 乙级 1048. 数字加密(20)
- PAT乙级 1048. 数字加密(20)
- PAT乙级 1048. 数字加密(20)
- PAT-乙级-1048. 数字加密(20)
- PAT 乙级 1048. 数字加密(20)
- 1048. 数字加密(20)PAT乙级
- PAT乙级 1048. 数字加密(20)
- 乙级 PAT 1048. 数字加密(20)
- PAT 乙级 1048. 数字加密(20) Java版
- PAT乙级1048. 数字加密(20)
- 1012. 数字分类 (20)-PAT乙级真题
- PAT 1048. 数字加密(20)