回文数

对称的数字

小D同学发现了一些数字与其反转数字相加求和得出新数字,新数字再不断重复这个过程,最终可能得到一个回文数,当然啦也有些数字不断重复这个过程也得不到回文数。例如数字349,有如下过程 349 + 943 = 1292 1292 + 2921 = 4213 4213 + 3124 = 7337 也就是经过3次迭代得到了了一个回文数。现在小D同学给你一个数字,问你能不能在1到100次迭代内(包含100次)得到一个回文数,如果可以输出这个回文数,如果不可以则输出NO。

input

多组测试数组,以EOF结束。
每组测试数据一行,每行一个整数,表示小D同学给出的数字,给出的整数大于等于0且在int范围内

output

每个测试数据输出一行,如果可以在1到100次迭代(包含100次)内得到回文数,那么输出这个回文数,如果不可以,则输出NO


```c
#include<stdio.h>
int work(long long n)//被调函数用来判读是否为回文数;
{
	char str[1000];
	long long i=0,k,x;
	x=n;
	while(n>0)
	{
		str[i]=n%10+'0';
		n/=10;
		i++;
	}
	sscanf(str,"%d", &k);
	if(k==x)
	return 1;
	else
	return 0;
}
int main()
{
	long long n,i,j,k,find,x;
	char str[1000];
	while(scanf("%d", &n)!=EOF)
	{
		find=0;
		for(i=1;i<=100;i++)
		{
			j=0;
			x=n;
			while(n>0)
			{
				str[j]=n%10+'0';
				n/=10;
				j++;
			}//将数倒序输入字符串;
			sscanf(str,"%d", &k);//将数导出;
		  n=x+k;
			if(work(n)==1)
			{
			printf("%d\n", n);
			find=1; 
			break;
		}
		}
		if(find==0)
		printf("no\n");
	
	}
	return 0;
}

## 注意:此处加的数叫大,还会越界需要用long long;回文数的最大特性为前后颠倒相等,只要判断颠倒前后是否相等即可;


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值