(编程之美)问题:任意给定一个整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只有1和0.
#include <stdio.h>
#include <math.h>
int n;
int m[100];
int main()
{
scanf("%d",&n);
int i =0;
int j=0;
int k = 0;
int count = 0;
do
{
bool flag = false;
bool f= false;
int tmp = pow(10,i);
j = tmp%n;
if(m[j] == 0)
{
m[j] = tmp;
flag = true;
f=true;
}
for(k=0;k<n;k++)
{
if(m[k]!=0 && m[(j+k)%n]==0 && tmp > m[k])//tmp>m[k]:如果m[k]!=0是由当前i值基数填充的,进入下一个循环
{
flag = true;
m[(j+k)%n] = tmp + m[k];
}
}
if(flag == false) count++;
else count=0;
i++;
if(count == n || m[0]>0)
break;
}while(1);
if(count == n)
printf("no solution/n");
else
printf("%d/n",m[0]);
}