给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0 且 a​k​​>0。N 被称为一个回文数,当且仅当对所有 i 有 a​i​​=a​k−i​​。零也被定义为一个回文数。

非回文数也可以通过一系列操作变出回文数。首先将该数字逆转,再将逆转数与该数相加,如果和还不是一个回文数,就重复这个逆转再相加的操作,直到一个回文数出现。如果一个非回文数可以变出回文数,就称这个数为延迟的回文数。(定义翻译自 https://en.wikipedia.org/wiki/Palindromic_number )

给定任意一个正整数,本题要求你找到其变出的那个回文数。

输入格式:

输入在一行中给出一个不超过1000位的正整数。

输出格式:

对给定的整数,一行一行输出其变出回文数的过程。每行格式如下

A + B = C

其中 A 是原始的数字,B 是 A 的逆转数,C 是它们的和。A 从输入的整数开始。重复操作直到 C 在 10 步以内变成回文数,这时在一行中输出 C is a palindromic number.;或者如果 10 步都没能得到回文数,最后就在一行中输出 Not found in 10 iterations.

输入样例 1:

97152

输出样例 1:

97152 + 25179 = 122331
122331 + 133221 = 255552
255552 is a palindromic number.

输入样例 2:

196

输出样例 2:

196 + 691 = 887
887 + 788 = 1675
1675 + 5761 = 7436
7436 + 6347 = 13783
13783 + 38731 = 52514
52514 + 41525 = 94039
94039 + 93049 = 187088
187088 + 880781 = 1067869
1067869 + 9687601 = 10755470
10755470 + 07455701 = 18211171
Not found in 10 iterations.
#include <iostream>
#include <algorithm>
using namespace std;
string plus_str(string s1,string s2){
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
string res="";int i;bool jinwei=false;
for(i=;i<s2.size();i++){
if(jinwei) {
res+=((s1[i]-''+s2[i]+-'')%+'');
jinwei=false;
if((s1[i]-''+s2[i]-''+)/>) jinwei=true;
}
else {
res+=((s1[i]-''+s2[i]-'')%+'');
if((s1[i]-''+s2[i]-'')/>) jinwei=true;
}
}
if(jinwei) res+='';
reverse(res.begin(),res.end());
return res;
}
int main()
{
string str,rev,add;int n=;
cin>>str;
while(n--){
rev=str;
reverse(rev.begin(),rev.end());
if(str==rev) {
printf("%s is a palindromic number.",str.data());
system("pause");
return ;
}
add=plus_str(str,rev);
printf("%s + %s = %s\n",str.data(),rev.data(),add.data());
str=add;
}
printf("Not found in 10 iterations.");
system("pause");
return ;
}

最新文章

  1. 关于sql server 2005存储过程的写法
  2. 项目组J2ee程序员的标志,你中招没 转载+评论
  3. Android根据字符串加载Activity和图片
  4. cocos2d-x 中的坐标系
  5. [USACO2005][POJ3045]Cow Acrobats(贪心)
  6. 【Winfrom】简单的焦点设置问题
  7. 数据类型转换的三种方式 Convert,parse和TryParse的解析
  8. Linux下yum安装MPlayer 或 LVC视频播放器
  9. ${fn:length(worklicenseList)} #表示不在struts堆栈里,没有#表示从struts堆栈里取
  10. linux shell 札记
  11. 在VS2010上使用C#调用非托管C++生成的DLL文件
  12. HDU1789Doing Homework again(贪心)
  13. 新概念英语(1-3)Sorry, sir
  14. Mybatis源码之StatementType
  15. HDFS副本放置策略
  16. Oracle管理文件OMF (oracle managed files)
  17. 九度OJ-第5章-图论
  18. call()和apply()
  19. C# ASCII与字符串间相互转换 (转)
  20. Sublime Text 使用方法

热门文章

  1. 逆转单向链表看这一篇就够了【JAVA】
  2. AlgorithmMap Dev Log
  3. Can you answer these queries III
  4. MongoDB 正则表达式查询
  5. Yii2 基于header 实现接口版本控制
  6. sysbench安装和测试
  7. 2019牛客多校三 A. Graph Games (图分块)
  8. 谷歌大脑提出:基于NAS的目标检测模型NAS-FPN,超越Mask R-CNN
  9. Redis的bind的误区(转)
  10. ckplayer获取播放时长一