题目描述
对于正整数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
#include<stdio.h>
int main()
{
int k,n,b,a,x,m,c=0,j,i=1,s=0;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
a=n;//a为数本身
x=n;
for(a;a>0;a--)
{
if(a==1)
{
c=0;
break;
}
c=0;
m=a;
b=a;
while(m>=10)
{
m=m/10;
i++;//i表示位数
}
for(j=0;j<i;j++)
{
s=b%10+s;//s为各位数和
b=b/10;
}
if(a+s==n)
{
c=1;
break;
}
}
if(c==1)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
}
我想知道我哪里错了,求解