xtuoj 0x05-B Colombian Number
题目
思路
我觉得这题的关键是数码和的范围由题知,numsum在1~81(最大9个9),而我们要判断n与k+numsum(k)是否相等,即k与n-numsum(k)的关系,numsum的范围在1~81,k的范围就在(n-81)~(n-1),只要检查这81个数就好了,否则numsum(k)肯定不存在,然后如果找到了,直接跳出for循环,用break,而不是continue,break就是找到了,循环不要进行了,continue,是跳过这轮循环,继续下一轮循环
代码
#include<stdio.h>
#define ll long long
#define N 1000000000ll n,start,end;ll numsum(ll n){ll sum=0;while(n){sum+=n%10;n/=10;}return sum;
}int main(){int K;scanf("%d",&K);while(K--){scanf("%lld",&n);int flag=0;start=n-81>0?n-81:1;end=n-1;for(int k=start;k<=end;k++){if(k+numsum(k)==n){printf("No\n");flag=1;break;}}if(!flag) printf("Yes\n"); }return 0;
}