4017 - 火炬

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB
2008年北京奥运会,你想成为一名火炬手,经过层层选拔,终于到了最后一关,这一关是一道很难的题目:任意给定一个正整数N(N<=100000),求一个最小的正整数M,使得N×M的十进制表示形式里只含有1和0。

题目输入

一个正整数N。

题目输出

输出一行,如果有解,输出最小的M,否则输出“No Solution”。

输入/输出样例

输入格式

12

输出格式

925

C++解答

#include<cstdio> 
#include<algorithm> 
using namespace std; 
#define F(x) for(int x=0;x<=1;x++) 
int n,i,j,k,l,m,o,p,q,w,e; 
long long ans=99999999999999999;
int main() 
{ 
    bool t=true; 
    scanf("%d",&n); 
    F(i) 
     F(j) 
      F(k) 
       F(l) 
        F(m) 
         F(e) 
          F(o) 
           F(p) 
            F(q) 
             F(w) 
              F(i1)
               F(i2)
                F(i3)
                 F(i4)
                  F(i5)
                   F(i6)
                    F(i7)
                     F(i8)
                      F(i9)
            { 
                long long temp=1*i+10*j+100*k+1000*l+10000*m+100000*e+1000000*o+10000000*p+100000000*q+1000000000*w;
				long long temp2=10000000000*i1+100000000000*i2+1000000000000*i3+10000000000000*i4+100000000000000*i5+1000000000000000*i6+10000000000000000*i7+100000000000000000*i8+1000000000000000000*i9;
				temp+=temp2;
                if(temp%n==0 and temp!=0) 
                { 
                    ans=min(ans,temp/n); 
                    t=false; 
                } 
            }      
    if(!t)    
    printf("%lld\n",ans); 
    else
    printf("No Solution\n");  
}