• PAT 甲级 1010 Radix


    #include <cstdio>
    #include <cstring>
    #include <cctype>
    #include <algorithm>
    using namespace std;
    typedef long long LL;
    struct bign
    {
        int len;
        int d[30];
        bign()
        {
            len=0;
            memset(d,0,sizeof(d));
        }
    };
    bign change(char str[],int &q)//将读入的字符串每一位保存进结构体相同下标的int数组里,并确定最小进制(即数串长度+1)
    {
        q=1;
        bign a;
        a.len=strlen(str);
        for(int i=a.len-1;i>=0;--i)
        {
            if(isdigit(str[i]))
            {
                a.d[a.len-1-i]=str[i]-'0';
    
            }
            else
            {//将字母转换10进制,a-10,b-11。。。
                a.d[a.len-1-i]=str[i]-'a'+10;
            }
            q=q>a.d[a.len-1-i]?q:a.d[a.len-1-i];
        }
        ++q;
        return a;
    }
    LL transform(bign a,int r)//将r进制的数转化并返回10进制
    {
        LL ans=0,p=1;
        for(int i=0;i<a.len;++i)
        {
            ans+=a.d[i]*p;
            p*=r;
        }
        return ans;
    }
    int binary_search(LL low,LL high,LL answer,bign a)
    {
        while(low<=high)
        {
            LL mid=(low+high)/2;
            LL res=transform(a,mid);
            if(res==answer)
                return mid;
            else if(res>answer||res<0)
                high=mid-1;
            else
                low=mid+1;
        }
        return -1;
    }
    
    int main()
    {//r1,r2分别代表对应数串最小进制
        int n,tag,radix,r1,r2;
        char a[20],b[20];
        scanf("%s %s %d %d",a,b,&tag,&radix);
        bign a1=change(a,r1);
        bign b1=change(b,r2);
        int ans;
        if(tag==1)
        {
            LL x=transform(a1,radix);
            LL l=r2;
            LL h=max(x,(LL)r2);
            ans=binary_search(l,h,x,b1);
        }
        else
        {
            LL x=transform(b1,radix);
            LL l=r1;
            LL h=max(x,(LL)r1);
            ans=binary_search(l,h,x,a1);
        }
        if(ans==-1)
            printf("Impossible
    ");
        else
            printf("%d
    ",ans);
        return 0;
    }
    View Code

    转载https://blog.csdn.net/a845717607/article/details/86531915

  • 相关阅读:
    联想yoga pro 13 使用Hyper-v蓝屏错误PAGE_FAULT_IN_NONPAGED-AREA的解决办法
    部署 Halo 博客系统
    GiuHub高级搜索关键字
    layer提示框弹出异常抖动,而且不显示
    bootstrap同一页面上多个模态框
    border-radius
    git查看本机ssh公钥
    简单的git连接远程仓库小记
    hexo搭建完成后输入hexo s 没有生成Html静态文件
    application/xml and text/xml的区别
  • 原文地址:https://www.cnblogs.com/jeseesmith/p/13936347.html
Copyright © 2020-2023  润新知