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

 

你可能感兴趣的:(number)