PTA不变初心数(17分)

          不变初心数是指这样一种特别的数,它分别乘 2、3、4、5、6、7、8、9 时,所得乘积各位数之和却不变。例如 18 就是这样的数:18 的 2 倍是 36,3+6=9;18 的 3 倍是 54,5+4=9;…… 18 的 9 倍是 162,1+6+2=9。对于 18 而言,9 就是它的初心。本题要求你判断任一个给定的数是否有不变的初心。

输入格式:

输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行,每行给出一个不超过 105 的正整数。

输出格式:

对每个给定的数字,如果它有不变的初心,就在一行中输出它的初心;否则输出 NO。

输入样例:

4

18

256

99792

88672

输出样例:

9

NO

36

NO

作者

陈越

单位

浙江大学

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

答案如下:

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"main(){int i, j, y, a, b, c, d, e, f, z, x1, x2, x3, x4, x5, x6, x, sum1, sum2, p, m, flag;scanf("%d", &a);//a就是题目中的Nfor (p = 0; p < a; p++){scanf("%d", &m);//m是要判断的数字c = m % 10;//m的个位d = m / 10 % 10;//m的十位e = m / 100 % 10;//m的百位f = m / 1000 % 10;//m的千位y = m / 10000 % 10;//m的万位z = m / 100000 % 10;//m的十万位sum1 = c + d + e + f + y + z;//sum1是m各个位上的数字相加,例b=36时,sum1=3+6=9for (j = 3; j < 10; j++)//循环嵌套{x = m * j;//例i=2,j=3,m=18时,x=54x1 = x % 10;//x的个位x2 = x / 10 % 10;x3 = x / 100 % 10;x4 = x / 1000 % 10;x5 = x / 10000 % 10;x6 = x / 100000 % 10;sum2 = x1 + x2 + x3 + x4 + x5 + x6;//sum2是x各个位上的和if (sum1 != sum2)//只要出现一种情况不相等就不是不变初心数{flag = 0;break;}else{flag = 1;//所有情况都符合,立一个旗表示m符合不变初心数的标准}}if (flag == 1){printf("%d\n", sum1);}else{printf("NO\n");}}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部