题目大意:给定两个整数 p 和 x; 找出一个p 位的数 这个数要求最后一位移道首位 编程原来的数的x倍;注意不能出现前导0(就是首位不能为0);
解题思路: 枚举最后一位 for(int i=1; i<10; i++) ; c 为上一位的进位;
倒数第二位: A[p-1] = A[p] * x + c;
倒数第三位:A[p-2] = A[p-1] * x + c;
最后判定第一位与最后一位是否相等即可;
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int A[1000005];
int main()
{
int p, x;
while(~scanf("%d%d", &p, &x))
{
int c = 0;
int ok = 0;
for(int i= 1; i<10; i++)
{
c = 0;
A[p-1] = i;
for(int j = p-2; j>=0; j--)
{
A[j] = (A[j+1] * x + c) % 10;
c = (A[j+1] * x + c) / 10;
}
if(A[0] *x + c == A[p-1] && A[0]!=0)
{
ok = 1;
break;
}
}
if(ok) for(int i=0; i<p; i++) printf("%d", A[i]);
else printf("Impossible");
printf("\n");
}
return 0;
}