不变初心数
(15 分)
不变初心数是指这样一种特别的数,它分别乘 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 行,每行给出一个不超过 10
5
的正整数。
输出格式:
对每个给定的数字,如果它有不变的初心,就在一行中输出它的初心;否则输出 NO。
输入样例:
4
18
256
99792
88672
结尾无空行
输出样例:
9
NO
36
NO
结尾无空行
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
int main()
{
int N,i,k,j,result,a,b,c,d,e,f;
scanf("%d",&N);
int ai[N];
for(i=0;i<N;i++)
{
scanf("%d",&ai[i]); // 输入数组的值,也要记得输入寻址符
}
for(i=0;i<N;i++)
{
int bi[10];
for(k=2;k<=9;k++)
{
result=ai[i]*k;
a=result/100000;
b=result/10000%10;
c=result/1000%10;
d=result/100%10;
e=result/10%10;
f=result%10;
bi[k]=a+b+c+d+e+f;
}
for(j=2;j<9;j++)
{
if(bi[j]!=bi[j+1])
{
printf("NO\n");
break;
}
}
if(j==9)
printf("%d\n",bi[2]);
}
}