題意:給你一個數n,求一個最小的數m,m是n的倍數,且m只能由0或1組成 分析:注意一下當n不為零時,m的最高位一定是1的,那麼就可以逐漸枚舉後面的0、1情況了,需要用到同模余定理 代碼:
#include<iostream> #include<stdio.h> #include<cstring> 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; }