• PAT 1048. 数字加密


    PAT 1048. 数字加密

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

    输入格式:

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

    输出格式:

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

    输入样例:

    1234567 368782971
    

    输出样例:

    3695Q8118
    

    代码如下

    #include<iostream>
    using namespace std;
    int main(){
    	string a,b;
    	cin>>a>>b;
    	char map[]={'J','Q','K'};
    	if(b.size()>a.size()) 
    	a.insert(a.begin(),b.size()-a.size(),'0'); // 如过b比a长,用0补位
    	else
    	b.insert(b.begin(),a.size()-b.size(),'0'); // 同理
    	int temp;
    	for(int i=0;i<b.size();i++){
               /* cnt表示b[i] 的位数为cnt,举个例子,比如12345,i=0时b[i]=1,且1在的位数为b.siez()-i=5-0=5*/
    		int cnt=b.size()-i; 
    		if(cnt%2!=0){   
    			temp=(a[i]-'0'+b[i]-'0')%13;
    			if(temp>=10)
    			cout<<map[temp-10];
    			else cout<<temp;
    		}
    		else{
    			if(b[i]-a[i]<0) cout<<b[i]-a[i]+10;
    			else cout<<b[i]-a[i];
    		
    	}
    	return 0;
    }
    
  • 相关阅读:
    【BZOJ3110】K大数查询(权值线段树套线段树+标记永久化,整体二分)
    【BZOJ3669】魔法森林(LCT)
    art-template前端高性能模板
    spring新心得
    工作流程
    idea操作
    log4j学习
    对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。
    JUnit4学习
    maven搭建
  • 原文地址:https://www.cnblogs.com/A-Little-Nut/p/8124500.html
Copyright © 2020-2023  润新知