分析:注意一下当n不为零时,m的最高位一定是1的,那么就可以逐渐枚举后面的0、1情况了,需要用到同模余定理
代码:
#include#include #include using namespace std; int k[1000000]; int main() { int n,t,i; while(scanf("%d",&n)&&n) { k[1]=1; for(i=2;k[i-1];i++) k[i]=(k[i/2]*10+i%2)%n; i--;t=0; while(i) { k[t++]=i%2; i/=2; } while(t) printf("%d",k[--t]); printf("\n"); } return 0; }