给你两个数,再告诉你其中一个数的进制,问你另一个数在哪个进制下可以让这两个数相等,输出是几进制。
其实我还没AC。。有一个点超时了。。应该要用二分。。暂且先放着吧。。
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define INF 0x3fffffff
using namespace std;
long long hs(char x)
{
if (x<='9')
return x-'0';
else
return x-'a'+10;
}
int main()
{
char a[15],b[15];
long long c,d,e,g;
cin>>a>>b>>c>>d;
int len;
e=g=0;
if (c==2)
{
swap(a,b);
}
len=strlen(a);
e=0;
for (int i=0;i<len;i++)
{
e=e*d+hs(a[i]);
}
len=strlen(b);
int i=1;
while (i++)
{
g=0;
for (int j=0;j<len;j++)
{
if (hs(b[j])>=i)
break;
g=g*i+hs(b[j]);
}
if (g>=e)
break;
}
if (g==e)
cout<<i;
else
cout<<"Impossible";
}