孤独数
|
Time Limit:1000MS Memory Limit:30000KB
Total Submit:1442 Accepted:407
Description
如果一个正整数a能够被表示为另外一个正整数b与b各位数字的和,那么我们认为这个数不是孤独的。现在的问题就是想让你求出所有不大于1000000的孤独数。比如46不是孤独数,因为46=41+4+1。
Input
无
Output
从小到大输出孤独数,每行一个。
Sample Input
无
Sample Output
略
思想:先打表~
#include <stdio.h>
#include <stdlib.h>
#define N 1000001
int trans(int n){
int m = 0;
while(n){
m += n % 10;
n /= 10;
}
return m;
}
int main(){
int *num = (int *)malloc(sizeof(int) * N);
int i = 0, m = 0;
for(i = 0; i < N; i++)
num[i] = 0;
i = 0;
m = i + trans(i);
while(m <= N){
num[m] = 1;
i++;
m = i + trans(i);
}
for(i = 0; i < N; i++)
if(!num[i])
printf("%d\n", i);
free(num);
return 0;
}
这尼玛在坑爹吗,我自己跑出来的时间都不止1秒了。居然还能过。。。