3639 - selfnumber
一个整数n,如果存在另一个整数i,i加上它各个数位上的数字刚好等于n, 就说n是selfnumber 例如n=51 i=39
39+3+9=51
你要做的很简单,输出1-x所有不是selfnumber的数。
x<=1000000 注意时限
Input
每一行输入x
Output
对应每一个x,每行输出一个selfnumber
Examples
Input
1 10
Output
1 1 3 5 7 9
Solution C
#include<stdio.h> #include<time.h> int main() { int i,j,n,k,t,c,q; // freopen("t.out","w",stdout); // freopen("t.in","r",stdin); while(scanf("%d",&n)==1) { for(i=1;i<=n;i++) { t=i;q=0;c=0; while(t>0){t/=10;q+=10;} for(j=i;(j>=i-q)&&j>0;j--) { t=j;k=j; while(k>0){t+=k%10;k/=10;} if(t==i){c=1;break;} } if(!c)printf("%d\n",i); }} return 0; }
Solution C++
#include <bits/stdc++.h> using namespace std; #define maxn 1000005 int a[maxn]; int main() { memset(a,0,sizeof(a)); for (int i=1;i<=1000000;i++){ char s[10]; sprintf(s,"%d",i); int sum=i; for (int is=0;is<strlen(s);is++){ sum+=(s[is]-'0'); } a[sum]=1; } int n; while(~scanf("%d",&n)){ for (int ik=1;ik<=n;ik++){ if (!a[ik]){ printf("%d\n",ik); } } } return 0; }