暖色空铃
2021-10-14 22:19
采纳率: 50%
浏览 14

题目描述 对于正整数n,不存在整数k,使得n等于k加上k的数码累加和,我们称这样的数是哥伦比亚数或者自我数。求看看

题目描述
对于正整数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 a,b,i,j,k;
int sum=0,t=0;
scanf("%d",&a);
while(a>0){
scanf("%d",&i);
for(j=i-1;j>0&&j>i-81;sum=0){
k=j;
do{
b=k%10;
k/=10;
sum+=b;
} while(k>0);
if(i==j+sum){
printf("No\n");
t=1;
}
j--; }
if(t==0){
printf("Yes\n");
}
t=0;
a--;
}
return 0;
}
不知道哪里错了

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 
    #include<bits/stdc++.h>
    using namespace std;
    
    int Colnum(int i)
    {
        int m = i;
        while(i != 0)
        {
            m += i%10;
            i /= 10;
        }
        return m;
    }
    int main()
    {
        int T;
        cin >> T;
        while(T--)
        {
            int n,i;
            bool flag = true;
            cin >> n;
            for(i = n-1; i > 0 && i > n-81; i--)
            {
                if(Colnum(i) == n)
                {
                    flag = false;
                    break;
                }
            }
            if(flag)
                cout << "Yes" << endl;
            else
                cout << "No" << endl;
        }
        return 0;
    }
    
    
    
    打赏 评论

相关推荐 更多相似问题