本文主要是介绍xtu oj 1251 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
AC代码
#include<stdio.h>
int main(){int K;scanf("%d",&K);while(K--){int n;scanf("%d",&n);int i,flag=1,sum;for(i=1;i<=81;i++){sum=0;int num=n-i;while(num){sum+=(num%10);num/=10;}if(sum==i){flag=0;break;}}if(flag)printf("Yes\n");else printf("No\n");}
}
解题思路:显然数码和最大值为81,利用数码和进行循环,这样最多循环81次,不会超时。数码和为i,则数为n-i,在判断该数的数码和是否等于i,等于说明不是哥伦比亚数。
这篇关于xtu oj 1251 Colombian Number的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!