1280: [蓝桥杯2015决赛]生成回文数 【中 / 字符串】

在这里插入图片描述
http://oj.ecustacm.cn/problem.php?id=1280

#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int a[1000];
string s;
bool judge(long long int sum)//判断是不是回文数 
{
    
    
	stringstream s1;
	s1<<sum;
	s1>>s;
	for(int i=0;i<s.size();i++)
	{
    
    
		if(s[i]!=s[s.size()-1-i])
		{
    
    
			return false;
		}
	}
	return true;
}
int main(void)
{
    
    
	int i;
	for(i=10;i<=200;i++)
	{
    
    
		long long int temp=i;
		long long int m=i;//保存原数 
		bool flag=true;
		int number=0;
		while(flag==true)
		{
    
    
			int j=0;
			while(temp)//求其相反数 
			{
    
    
				a[j++]=temp%10;
				temp/=10;
			}
			long long int sum=0;
			for(int i=0;i<j;i++)
			{
    
    
				sum=sum*10+a[i];
			}
			sum=sum+m;//两数的和 
			if(judge(sum))
			{
    
    
				flag=false;
				break;
			} 
			temp=sum; 
			m=sum;
			number++;//运算的次数 
			if(number>36)//运算次数超过30 说明找到了 
			{
    
    
				printf("%d\n",i);
				return 0;
			}
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/bettle_king/article/details/115415331