现在的位置: 首页 > 综合 > 正文

1024. Palindromic Number

2013年10月11日 ⁄ 综合 ⁄ 共 686字 ⁄ 字号 评论关闭

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;
}

抱歉!评论已关闭.