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