|
|
back to boardHelp!!! Can anyone explain me what is yhe problem with my program. #include<cstdio> using namespace std; int k,nr,n,p,u,i,j,obt[1000001],fol[1000001],ap[1000001],x[1000001],x1[1000001],cif[100]; char bst[1000002][32],cr[32]; int cmp(char a[32],int n,char b[32],int m) { int i; if(n<m) return -1; if(n>m) return 1; for(i=1;i<=n;i++) if(a[i]!=b[i]) break; if(a[i]>=b[i]) return 1; else return -1; } int main() { //freopen("input","r",stdin); //freopen("output","w",stdout); scanf("%d",&n); u=2; x[1]=1%n; x[2]=2%n; ap[1%n]=1; ap[2%n]=1; obt[1%n]=1; obt[2%n]=2; fol[1%n]=1; fol[2%n]=1; bst[1%n][1]='1'; bst[2%n][1]='2'; for(i=2;i<=30;i++) { p=0; for(j=1;j<=u;j++) { for(k=1;k<=fol[x[j]];k++) cr[k]=bst[x[j]][k]; cr[k]='1'; if(ap[(x[j]*10+1)%n]==0||cmp(bst[(x[j]*10+1)%n],fol[(x[j]*10+1)%n],cr,fol[x[j]]+1)>0) { ap[(x[j]*10+1)%n]=1; obt[(x[j]*10+1)%n]=1; fol[(x[j]*10+1)%n]=fol[x[j]]+1; for(k=1;k<=fol[x[j]]+1;k++) bst[(x[j]*10+1)%n][k]=cr[k]; p++; x1[p]=(x[j]*10+1)%n; } cr[fol[x[j]]+1]='2'; if(ap[(x[j]*10+2)%n]==0||cmp(bst[(x[j]*10+2)%n],fol[(x[j]*10+2)%n],cr,fol[x[j]]+1)>0) { ap[(x[j]*10+2)%n]=1; obt[(x[j]*10+2)%n]=2; fol[(x[j]*10+2)%n]=fol[x[j]]+1; for(k=1;k<=fol[x[j]]+1;k++) bst[(x[j]*10+2)%n][k]=cr[k]; p++; x1[p]=(x[j]*10+2)%n; }
} if(ap[0]==1) break; u=p; for(j=1;j<=u;j++) x[j]=x1[j]; } nr=0; if(ap[0]==0) printf("Impossible\n"); else { for(i=1;i<=fol[0];i++) printf("%d",bst[0][i]-48); printf("\n"); } return 0; } |
|
|