PAT A1136 A Delayed Palindrome (20 分)
原题链接
- 大致题意
- 思路
- AC代码
1.大致题意
给定一个数字,将其颠倒,判断在十步之内,二者之和有没有回文数字
2.思路:直接模拟(水题)
判断回文的两种方法:
(1)对于字符串str的所有i,如果a[i]==a[len-i-1] (下标从0开始),则为回文串
(2)如果str与它反转后的字符串相等,则为回文串
3.AC代码
#include<bits/stdc++.h>
using namespace std;
string rev(string s)
{
reverse(s.begin(),s.end());
return s;
}
string add(string a1,string a2)
{
string sum=a1;
int c=0;
for(int i=a1.length()-1;i>=0;i--)
{
sum[i]=(a1[i]-'0'+a2[i]-'0'+c)%10+'0';
c=(a1[i]-'0'+a2[i]-'0'+c)/10;
}
if(c>0) sum="1"+sum;
return sum;
}
int main()
{
string s;
cin>>s;
if(s==rev(s)) //有可能输入的字符串本身就是回文串
{
cout<<s<<" is a palindromic number.";
return 0;
}
int n=10;
while(n--)
{
string sum=add(s,rev(s));
cout<<s<<" + "<<rev(s)<<" = "<<sum<<endl;
if(sum==rev(sum))
{
cout<<sum<<" is a palindromic number.";
return 0;
}
s=sum;
}
cout<<"Not found in 10 iterations.";
return 0;
}
喵~