USTC机试—递归的判断一个整数和其逆序数之和是否是回文数,如果不是回文数则如此往复求和直到是回文数,输出求和的次数
2018-02-21 21:49
941 查看
例题:给你一个数,要求你求出这个数与其反序数的和相加多少次才可以得到回
文字,
比方说给你 56
56+65=121,是回文字,所以输出1;
给你 1568
1568+8651=10219,不是回文字,继续,
续,
101410+014101=115511,是回文字,结束,输出3;
文字,
比方说给你 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; }
相关文章推荐
- 判断是否为2的幂||输出一个整数二进制格式中1的个数 非循环非递归实现
- 输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。
- 输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符.cpp
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 写一个脚本checkipadd.sh,判断所输入的参数是否为正确的IP地址,如 果是就输出"This is ip address";如果不是就输出"This is not ip address" (1
- 判断字符串是否可以通过交换相邻字符得到回文字符串,如果可以输出最少交换次数
- java 编写程序实现从控制台接收一个 5 位以上的整数,使用数组来判断该数字 * 是否是回文数。(例如:789987,12344321是回文数)
- 判断一个字符串是否是回文,如果是,返回字符串“yes”,如果不是,返回字符串“no”
- 判断一个字符串是否是另一个字符串的左旋,如果是输出左旋的次数
- 让用户输入一个5位数(若不是5位数,则提示错误),判断它是不是回文数,输出判断结果。回文数:如12321是一个回文数,万位与个位相同,十位与千位相同。
- Palindrome Number leetcode 判断一个整数是否是回文
- 《剑指Offer》输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 判断一个整数是否为回文数
- 判断一个整数是否为回文数
- 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
- java编写输入一个数判断是否是回文数,所谓回文数比如121,1221,6778776
- 项目39.4-1输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。
- 判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
- 201111621401-白乐乐-判断一个正整数是否为质数的算法。函数签名如下 int isPrime(long a) 输入:一个长整数a 输出:返回1(为质数),返回0(非质数)