poj 1316 Self Numbers
题意:找出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;
类似于递归,所有的数可以追溯到最底层的