zoukankan      html  css  js  c++  java
  • 1048 数字加密(20 分)

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

    输入格式:

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

    输出格式:

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

    输入样例:

    1234567 368782971
    

    输出样例:

    3695Q8118
    
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main(){
        string a,b;
        string k="0123456789JQK";
        cin>>a>>b;
        string s;
        int c=a.length();
        int d=b.length();
        std::reverse(a.begin(),a.end());
        std::reverse(b.begin(),b.end());
        if(c>d)//这道题里比较坑的一点,如果被加密数字的位数没有给定的数字位数多,还是需要补0的,要求是两个数长度必须一样
        for(int i=0;i<c-d;i++)
        b+='0';
        if(d>c)
        for(int i=0;i<d-c;++i)
        a+='0';
        for(int i=0;i<b.length();i++){
            if((i+1)%2==0){
                if(b[i]-a[i]<0)
                s+=b[i]-a[i]+10+'0';
                else s+=b[i]-a[i]+'0';
            }
            else{
                int y=b[i]+a[i]-'0'-'0';
                s+=k[y%13];
            }
        }
        std::reverse(s.begin(),s.end());
        cout<<s;
    }
  • 相关阅读:
    什么是内部类
    "=="和equals方法究竟有什么区别?
    SWFUpload乱码问题的解决
    xStream转换XML、JSON
    Java文件下载
    笔记摘录
    Javascript 函数传参问题
    JQUERY伸缩导航
    ruby关于flip-flop理解上一个注意点
    ruby 使用Struct场景
  • 原文地址:https://www.cnblogs.com/fromzore/p/9601145.html
Copyright © 2011-2022 走看看