Description
Colombian Number
题目描述
对于正整数n,不存在整数k,使得n等于k加上k的数码累加和,我们称这样的数是哥伦比亚数或者自我数。
比如 11就不是一个哥伦比亚数,因为10加上10的数码累加和1等于11;而20则是一个哥伦比亚数。
输入
第一行是一个整数K(K≤10,000),表示样例的个数。
以后每行一个正整数n(1≤n≤1,000,000,000)
输出
每行输出一个样例的结果,如果是哥伦比亚数输出"Yes",否则输出"No"。
样例输入
5
1
2
3
20
21
样例输出
Yes
No
Yes
Yes
No
Sample Input
Sample Output
Source
#include <stdio.h>
//构造函数,数码累加和
int addition(int n)
{
int sum=n;
while(n)//循环条件为n不为0
{
sum+=n%10;//从数的右到左,进行数码累加
n/=10;//去掉数的最右边位
}
return sum;
}
int main()
{
int k;
scanf("%d",&k);
while(k--)
{
int n,i,flag=1;//flag为1
scanf("%d",&n);
for(i=1;i<=81;i++)//999999999的数码和为81
{
if(n-i>0)
{
if(addition(n-i)==n)//判断
{
flag=0;//标记为0
break;//跳出循环
}
}
else
{
break;//跳出循环
}
}
if(flag==1)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
写于2021年8月15日20:30分。
重在独自思考,多敲