1048. 数字加密(20)
来源:互联网 发布:win10软件禁网 编辑:程序博客网 时间:2024/06/11 16:10
本题要求实现一种数字加密方法。首先固定一个加密用正整数A,对任一正整数B,将其每1位数字与A的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对13取余——这里用J代表10、Q代表11、K代表12;对偶数位,用B的数字减去A的数字,若结果为负数,则再加10。这里令个位为第1位。
输入格式:
输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。
输出格式:
在一行中输出加密后的结果。
输入样例:
1234567 368782971
输出样例:
3695Q8118
/**最后一点得分点的坑点就是,因为题目固定a,所以当a的长度大于b的长度的时候,b的前面应该补上0,在进行奇数偶数 拼接*/#include <bits/stdc++.h>using namespace std;vector<char> v;void cncat(int t) { int tk = t%13; char ch; if (tk < 10) ch = tk+'0'; else if (tk == 10) ch = 'J'; else if (tk == 11) ch = 'Q'; else ch = 'K'; v.push_back(ch);}void change(string a, string b, bool flag) { int len = a.length(); for (int i = 0; i < len; i++) { int k = i+1;//因为i下标从0开始 if (k%2 != 0) { int t = (a[i]-'0')+(b[i]-'0'); cncat(t); } else { int t = (b[i]-'0')-(a[i]-'0'); if (t < 0) t += 10; cncat(t); } } if (!flag) { for (int i = a.length(); i < b.length(); i++) { v.push_back(b[i]); } }}int main(){ string a, b; cin >> a >> b; reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); bool flag; if (a.length() >= b.length()) { for (int i = b.length(); i < a.length(); i++) b += '0'; flag = true; } else flag = false; change(a, b, flag); for (int i = (v.size()-1); i >= 0; i--) cout << v[i]; cout << endl; return 0;}
阅读全文
0 0
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- 1048. 数字加密(20)
- invalid bound statement (not found)解决办法
- 解决WebUploader 选择文件按钮点击无效问题
- Source Insight 快捷键
- C# 创建KD树的程序
- Java Web基础知识之文件上传:文件上传一窥究竟
- 1048. 数字加密(20)
- 欧美时尚风格海报设计
- 【ArcSDE】ArcSDE服务的创建
- 再遇样条,读论文Color Lens Shade Compensation achieved by Linear Regression of Piece-Wise Bilinear Spline
- WebDriverException: Cannot find firefox binary in PATH."的解决方法
- STM32F207调试记录之串口配置
- AngularJS ng-show指令
- 算法导论习题自做2.2-2
- Android Studio使用CMake构建脚本调用jni