int fun(int N); void fun1(int Temp); unsigned long TEMP=0 ; main() { int N ; int Temp ; unsigned long S ; scanf("%d",&N); Temp=1<<(fun(N)-1); //printf("%d\n",Temp); while(1) { TEMP=0 ; fun1(Temp); //printf("TEMP=%lu\n",TEMP); if(!(TEMP%N)) { printf("%d * %lu = %lu \n",N,TEMP/N,TEMP); break ; } if(TEMP==1111111111) { printf("超出本程式计算范围!"); break ; } Temp++; } } int fun(int N) { int T=0 ; while(N)T++,N/=10 ; return T ; }
void fun1(int Temp) { if(Temp)fun1(Temp>>1),TEMP*=10,TEMP=TEMP+(Temp&0x01); }
没测试,感觉应该这个算法更快