您的位置:首页 > 其它

poj 1316 Self Numbers

2012-04-13 16:50 369 查看
题意:找出10000以内所有的不能由n+n的各位数字和组成的数字

#include<stdio.h>
#include<string.h>
int main()
{
int i=1;
int a[100100];//数组开小了,错
memset(a,0,sizeof(a));
for (i=1;i<10000;i++)
{
a[i+i%10+(i/10)%10+(i/100)%10+i/1000]=1;
}
for (i=1;i<10000;i++)
if(a[i]==0)  printf("%d\n",i);
return 0;
}


这道题错的原因是只是4位数,所以i最后/1000而不是10000;

数组开小了,虽然输出的时候用不到10000后的数组,但是在

存储过程中是需要用到的,由于数组开小了,导致最后无法读

出程序

另解法,搜索大牛结题报告

当一个数为 generator,则必定可以拆分成a*2+b*11+c*101+d*1001(0=<a,b,c,d<=9)

其中

2=1+1;

11=10+1;

101=100+1+0;

1001=1000+1+0+0; 

类似于递归,所有的数可以追溯到最底层的 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: