1010 Radix (25)

来源:互联网 发布:修改tomcat的端口号 编辑:程序博客网 时间:2024/05/20 14:23

给你两个数,再告诉你其中一个数的进制,问你另一个数在哪个进制下可以让这两个数相等,输出是几进制。
其实我还没AC。。有一个点超时了。。应该要用二分。。暂且先放着吧。。

#include <cstdio>#include <vector>#include <string>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>#define INF 0x3fffffffusing 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";}
原创粉丝点击