1.回文数(一)
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式:
输入一行,包含一个正整数n。
数据规模和约定:1<=n<=54。
输出格式:
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入:
1 | 52 |
样例输出:
1 | 899998 |
代码:
1 | #include <stdio.h> |
2.回文数二)
若一个数(首位不为0)从左到右读与从右到左读都是一样,这个数就叫做回文数,例如12521就是一个回文数。
给定一个正整数,把它的每一个位上的数字倒过来排列组成一个新数,然后与原数相加,如果是回文数则停止,如果不是,则重复这个操作,直到和为回文数为止。给定的数本身不为回文数。
例如:87则有:
STEP1: 87+78=165
STEP2: 165+561=726
STEP3: 726+627=1353
STEP4: 1353+3531=4884
编写一个程序,输入M(12<=M<=100),输出最少经过几步可以得到回文数。如果在8步以内(含8步)不可能得到回文数,则输出0。
输入格式:
第1行一个正整数L,代表测试数据的组数。
接下来L行每行一个整数M(12<=M<=100),M本身不为回文数
输出格式:
输出L行,第i行对应输入数据的第i+1行,输出最少需要的步数;如果步数大于8,则输出0。
样例输入:
1 | 3 |
样例输出:
1 | 1 |
代码:
1 | #include <stdio.h> |
3.回文数(三)
一个正整数,如果交换高低位以后和原数相等,那么称这个数为回文数。比如121,2332都是文数,134567不是回文数。任意一个正整数,如果其不是回文数,将该数交换高低位以后和原数相加得到一个新的数,如果新数不是回文数,重复这个变换,直到得到回文数为止。例如,57变换后得到132(57+75),132得到363(132 + 231), 363是一个回文数。
曾经有数学家猜想:对于任意正整数,经过有限次上述变换以后,一定能得出一个回文数。至至这个猜想还没有被证明是对的。现在请你通过编程来验证。
输入格式:
输入一行一个正整数n。
输出格式:
输出第一行一个正整数, 表示得到一个回文数的最少变换次数。
接下来一行,输出变换过程,相邻的数之间用—>”连接。输出格式可以参见样例。保证最后生成的数在int范围内。
样例输入:
1 | 349 |
样例输出:
1 | 3 |
代码:
1 | #include <stdio.h> |
4.回文数(四)
若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。
又如:对于10进制数87:
STEP1:87+78 = 165
STEP2:165+561 = 726
STEP3:726+627 = 1353
STEP4:1353+3531 = 4884
在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。
写一个程序,给定一个N(2< =N< =10或N=16)进制数M(其中16进制数字为0-9与A-F),求最少经过几步可以得到回文数。
如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”
输入格式:
两行,N与M 100位,两数的最高位都不是0。
输出格式:
如果能在30步以内得到回文数,输出“STEP=xx”(不含引号),其中xx是步数;否则输出一行”Impossible!”(不含引号)
样例输入:
1 | 9 |
样例输出:
1 | STEP=6 |
代码:
1 | #include <stdio.h> |