Description
给定一个正整数X,求一个最小的正整数N,使得N能被X整除。
并且N有个性质:其各位数字都相同,比如1111,222222……
Input
有若干组测试数据,以EOF结束。
对于每组测试数据只有一行,包含一个正整数X(0 < X < = 100000)。
Output
每组测试数据输出一行,包含1个正整数N。如果不存在则输出"No Solution"。
Sample Input
74
Sample Output
222
http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=519
不要枚举数,只需找到位数即可
从1到9找一遍即可
#include<cstdio>
#include<cstring>
#include<map>
#define inf 100000000
using namespace std;
int main(){
int i,j,n;
map<int ,int>mp;
while(scanf("%d",&n)!=EOF){
int r,num,ans=inf,number;
for(i=1;i<=9;i++){
mp.clear();
r=0,num=0;
while(1){
r=(r*10+i)%n;
num++;
if(r==0)
break;
if(mp[r]!=0)
break;
mp[r]=1;
}
if(r==0){
if(ans>num){
ans=num;
number=i;
}
}
}
if(ans!=inf){
for(j=1;j<=ans;j++)
printf("%d",number);
printf("\n");
}
else
printf("No Solution\n");
}
}