cf B Very Beautiful Number

题意:给你两个数p和x,然后让你找出一个长度为p的数,把它的最后移到最前面之后得到的数是原来数字的x倍,有很多这样的数取最小。

思路:枚举最后一位,然后就可以推出整个的一个数,然后比较得到的数的第一个数字和枚举的数字是否相等既可以。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int p,x;
 8 char str[1000010];
 9 
10 int main()
11 {
12     scanf("%d%d",&p,&x);
13     bool flag=false;
14     for(int i=1; i<=9; i++)
15     {
16         int m=i;
17         int c=0;
18         int y=i;
19         str[0]=m+'0';
20         for(int j=1; j<=p; j++)
21         {
22             int cc=(y*x+c)/10;
23             y=(y*x+c)%10;
24             str[j]=y+'0';
25             c=cc;
26         }
27         if(y==m&&str[p-1]!='0'&&c==0)
28         {
29             flag=true;
30             for(int k=p-1; k>=0; k--)
31             {
32                 printf("%c",str[k]);
33             }
34             printf("\n");
35             break;
36         }
37     }
38     if(!flag) printf("Impossible\n");
39     return 0;
40 }
View Code

 

posted @ 2015-01-26 21:25  null1019  阅读(169)  评论(0编辑  收藏  举报