问题描述:给定一个数,判断是否是palindromic(翻转也一样),不是则求a+a的翻转的数。
解题思路:先判断该数字串是否为回文数,不是,则做加法,继续判断。
AC代码:
/*1136 A Delayed Palindrome (20 分)
*先判断该数字串是否为回文数,不是,则做加法,继续判断。
*/
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool judge(string &str)//判断
{
int i=0,j=str.length()-1;
while(i<j){
if(str[i]!=str[j])return false;
++i;--j;
}
return true;
}
string add(string &str)//相加
{
string y="",s=str;
int i,x,n=str.length();
reverse(s.begin(),s.end());
x=0;i=0;
while(i<n){
x+=str[i]+s[i]-2*'0';
y+=x%10+'0';
x/=10;
++i;
}
if(x)y+=x+'0';
reverse(y.begin(),y.end());
printf("%s + %s = %s\n",str.c_str(),s.c_str(),y.c_str());
return y;
}
int main()
{
freopen("test.txt","r",stdin);
string str;
cin>>str;
int i=10;
while(i--){//10次迭代
if(judge(str)){
printf("%s is a palindromic number.",str.c_str());
return 0;
}
str=add(str);
}
printf("Not found in 10 iterations.");
return 0;
}