枚举+模拟
枚举个位,然后依次向前模拟相乘。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std ;
const int N=1000005;
char ans[N];
int p,x;
bool get_ans(int k)
{
ans[p-1]=k+'0';
int carry=0,tmp;
for(int i=p-1;i>0;i--){
tmp=(ans[i]-'0')*x+carry;
ans[i-1]=tmp%10+'0';
carry=tmp/10;
}
if(ans[0]-'0'==0)return 0;
if(((ans[0]-'0')*x+carry)==k) return 1;
return 0;
}
int main()
{
while(scanf("%d %d",&p,&x)!=EOF){
bool flag=0;
ans[p]='\0';
for(int i=1;i<10;i++){
if(get_ans(i)){
flag=1;
break;
}
}
if(flag)printf("%s\n",ans);
else puts("Impossible");
}
return 0 ;
}