题意:给你两个数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 }
时间: 2024-10-12 17:07:27