pat1048 数字加密(20)(20 分)
程序员文章站
2022-07-15 13:36:26
...
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
#include<iostream>
#include <stdlib.h>
using namespace std;
char fun(int a){
if(a<=9)
return a+'0';
else if(a==10)
return 'J';
else if(a==11)
return 'Q';
else if(a==12)
return 'K';
}
int main(){
string ch,ch2;
bool flag=true;
cin>>ch>>ch2;
int len=ch.length()-1,len2=ch2.length()-1;
if(len2<len){
for(int i=0;i<len-len2;i++){
ch2="0"+ch2;
}
len2=ch2.length()-1;
}
while(true){
int number=0;
if(flag){
number=((int)ch2[len2]-48+(int)ch[len]-48)%13;
flag=false;
}else{
number=(((int)ch2[len2]-48)-((int)ch[len]-48));
number<0?number+=10:number;
flag=true;
}
ch2[len2]=fun(number);
if(len<=0)
break;
len--;
if(len2>0)
len2--;
}
cout<<ch2<<endl;
return 0;
}
推荐阅读
-
20分钟MySQL基础入门
-
Python全栈Day 20部分知识点
-
美国公司商用智能机石墨烯电池:20分钟满电3000mAh、可循环1500次
-
Excel2010中如何生成连续的数字以生成20个连续数字为例
-
php通过排列组合实现1到9数字相加都等于20的方法
-
三星Galaxy S20 Ultra优化到位:25W充满5000mAh用时59分钟
-
Redmi K20 Pro尊享版今天发布!12GB+512GB、跑分超47万
-
中国网民2018年平均每天多玩1小时手机:20分钟刷短视频
-
1001 A+B Format (20 分)
-
iPhone 11 Pro现身GeekBench:内存4GB、A13跑分提升20%