运用DFS解决,深搜每一位,最多100位,搜每一位时算出当前数MODn的余数,留作下次使用 ///强烈提醒自己提交code时注意删去不必要的代码行,因为这WA了一次 #include<stdio.h> #include<string.h> char s[105]; int n,ends; int dfs(int k,int remain) { int t=remain,i; if(ends) return 0; if(k>99) return 0; if(t%n==0) { s[k]='/0'; return 0; } s[k]='0'; t*=10; if(t%n==0) { s[k+1]='/0'; ends=1; return 0; } else dfs(k+1,t%n); if(ends) return 0; s[k]='1'; t+=1; if(t%n==0) { s[k+1]='/0'; ends=1; return 0; } else dfs(k+1,t%n); if(ends) return 0; return 0; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(scanf("%d",&n)==1&&n) { s[0]='1';ends=0; dfs(1,1%n); printf("%s/n",s); } return 0; } /********************************************************************/ ///以下为检验上述得到的m值是否能被n整除,以及商 /*-------------------------------------------------------------------- #include<stdio.h> #include<string.h> int n; char s[105]; int main() { freopen("out.txt","r",stdin); freopen("ans.txt","w",stdout); int cas=1,j; for(int i=1;i<=200;i++) { scanf("%s",s); int num=0; int len=strlen(s); for(j=0;j<len;j++) { num=num*10+(s[j]-'0'); printf("%d",num/i);输出商 num=num%i; } printf("/n"); if(num==0) printf("%d:1 %d/n",i,len);整除输出1,否则输出0 else printf("%d:0 %d/n",i,len); } return 0; } ----------------------------------------------------------------------*/