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

输入格式:

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

输出格式:

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

输入样例:

1234567 368782971

输出样例:

3695Q8118
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
string s1, s2;
getline(cin, s1);
s2 = s1.substr(s1.find(" ") + , s1.length() - s1.find(" "));
s1.erase(s1.find(" "), s1.length() - s1.find(" "));
while (s2.length() < s1.length()){
s2.insert(, "");
}
//cin >> s1 >> s2;
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
int res;
for (int i = ; i < s2.length() && i < s1.length(); i++){
if (i % == ){
res = (s1[i] - '' + s2[i] - '')%;
if (res < )s2[i] = '' + res;
else if (res == )s2[i] = 'J';
else if (res == )s2[i] = 'Q';
else if (res == )s2[i] = 'K';
}
else{
res = s2[i] - '' - s1[i] + '';
if (res < )res += ;
s2[i] = '' + res;
}
//cout << s2[i] << endl;
}
reverse(s2.begin(),s2.end());
cout << s2;
system("pause");
}

注意点:这题逻辑很简单,就是有一个坑会导致测试点2和6过不去,就是B比A短,要补0直到一样长。

最新文章

  1. java中文乱码解决之道(六)-----javaWeb中的编码解码
  2. C++11笔记&lt;一&gt;
  3. XP局域网内专用消息队列
  4. IT行业常见职位职业路线图
  5. Xcode与OX 版本对照表
  6. Android中实现进入App之后检查网络状态
  7. Ubuntu14.04 切换root账户su root失败解决办法
  8. Linux---More命令 初级实现
  9. 实现一个脚本语言Raven(一)
  10. GPUImage滤镜效果翻译
  11. 类似aaa?a=1&amp;b=2&amp;c=3&amp;d=4,如何将问号以后的数据变为键值对
  12. MySQL 性能调优之SQL
  13. [转]微擎人人商城m()函数调用model方法
  14. Silverlight 预定义颜色速查表
  15. 单片机程序在内存和FLASH中的空间分配
  16. $(...).modal is not a function
  17. jdk1.8安装后查看Java -version出错
  18. GO1.6语言学习笔记2-安装配置及代码组织
  19. xcode10不兼容问题解决方法,framework编译脚本
  20. Halcon 笔记1

热门文章

  1. CountDownTimer 源码分析
  2. 与ServletContext相关的监听器
  3. 带你从零学ReactNative开发跨平台App开发(二)
  4. 稳聘App设计图分享
  5. iOS手机流量抓包rvictl
  6. 分享今天在客户那里遇到的SQLSERVER连接超时以及我的解决办法
  7. Oracle EBS OM 发放订单
  8. 为什么Sql Server的查询有时候第一次执行很慢,第二次,第三次执行就变快了
  9. mybatis 中的&lt;![CDATA[ ]]&gt;
  10. 学习python 第一章