http://pat.zju.edu.cn/contests/pat-a-practise/1024
判断回文数,通过翻转求和若干次将输入变为一个回文数
例:67 + 76 = 143, and 143 + 341 = 484. 2步
通过本题,掌握c++字符串
#include <iostream> #include <string> #include <algorithm> //reverse函数用到 using namespace std; string add(string s1,string s2) { string result=""; int carry=0; int len=s1.length(); int sum; while (len--) { sum=s1[len]-'0' + s2[len]-'0'+carry; result.insert(result.begin(),sum%10+'0'); carry=sum/10; } if (carry) //最终和有进位 { result.insert(result.begin(),carry+'0'); } return result; } int main() { string s1,s2,result; //s1作为输入,s2是翻转后的字符串 int k,ans=0; //ans保存翻转求和次数 cin>>s1>>k; while (ans!=k) { s2=s1; reverse(s2.begin(),s2.end()); if (s1==s2) //若回文 { break; } else //否则继续翻转求和 { s1=add(s1,s2); } ans++; } cout<<s1<<endl<<ans<<endl; return 0; }