ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PTA basic 1048 数字加密 (20 分) c++语言实现(g++)

2021-05-07 23:32:30  阅读:199  来源: 互联网

标签:加密 数字 int 1048 PTA vector 20 include 正整数


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

输入格式:

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

输出格式:

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

输入样例:

1234567 368782971
 

输出样例:

3695Q8118




需要注意的地方

1.a位数比b小的时候, a不足的对应位置要补0
2.b位数比a小的时候, b不足的对应位置要补0   测试点2 5


#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main(){
    int i=1,tempb,tempa,aindex,bindex;
    vector<char> alpha{'0','1','2','3','4','5','6','7','8','9','J','Q','K'};
    vector<char> str;
    string a,b;
    cin >> a >> b;
    int bsize=b.size();
    int asize=a.size();
    vector<int> aArr,bArr;
    for(auto i:a){
        aArr.push_back(static_cast<int>(i-'0'));
    }
    for(auto i:b){
        bArr.push_back(static_cast<int>(i-'0'));
    }
    
    for(int i=0;i<bsize||i<a.size();i++){
        if(asize-1-i<0)tempa=0;else tempa=aArr[asize-1-i];//a的位数比b小时,对位要补0
        if(bsize-1-i<0)tempb=0;else tempb=bArr[bsize-1-i];//b的位数比a小时,对位也要补0  测试点2 5
        if(i%2!=0){//偶数位
            tempb=tempb-tempa;
            tempb=tempb<0?tempb+10:tempb;
            str.push_back(to_string(tempb)[0]);
        }else{//奇数位
            tempb=(tempb+tempa)%13;
            str.push_back(alpha[tempb]);
        }
    }
    
    while(str.size()){
        cout << str[str.size()-1];
        str.pop_back();
    }
    cout <<endl;
    return 0;
}

 

标签:加密,数字,int,1048,PTA,vector,20,include,正整数
来源: https://www.cnblogs.com/ichiha/p/14743130.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有