您的位置:首页 > 其它

USTC机试—递归的判断一个整数和其逆序数之和是否是回文数,如果不是回文数则如此往复求和直到是回文数,输出求和的次数

2018-02-21 21:49 941 查看
例题:给你一个数,要求你求出这个数与其反序数的和相加多少次才可以得到回
文字,
比方说给你 56

56+65=121,是回文字,所以输出1;
给你 1568
1568+8651=10219,不是回文字,继续,
10219+91201=101410,不是回文字,继
续,

101410+014101=115511,是回文字,结束,输出3;
#include<stdio.h>
int sum(int x){//求和函数
int y=0;
int tmp=x;
while(tmp){
y=y*10+tmp%10;
tmp/=10;
}
y+=tmp%10;
return x+y;
}
bool judge(int x){//
int y=0;
int tmp=x;
while(tmp){
y=y*10+tmp%10;
tmp/=10;
}
y+=tmp%10;//反向求数算法至此都是相同
if(x==y)return true;//这是判断回文数的方法,利用是否相等而不是中间对半分判断
else return false;
}
int main(){
int x;
int count=1;
int z;
while(scanf("%d",&x)!=EOF){
z=sum(x);
while(judge(z)==false){
count++;
z=sum(z);
}
printf("%d\n",count);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐