1 条题解

  • 1
    @ 2023-12-29 19:54:32
    #include <bits/stdc++.h>
    #define ll long long
    
    using namespace std;
    
    int I;
    
    //I进制转为10进制
    ll to(ll  n){
        if (I==10) return n;
        //按位加权累加
        ll ans=0;int j=1;
        while (n){
            ans+=n%10*j;
            j*=I;
            n/=10;
        } 
        return ans;
    }
    
    int mi(ll n){//n中每位的最大数字ans,表示n最少是ans+1进制
        ll ans=1;
        while (n){
            ans=max(n%10,ans);
            n/=10;
        }
        return (int)(ans+1);
    }
    int main(){
        //岂不是有手就行?
        //思路:对2-16进制进行循环
        //使等式成立的进制即输出
        ll p,q,r,p1,q1,r1;
        cin>>p>>q>>r;
        //p=6,q=9,r=42;
        //最小应该是几进制?
        int m=max(mi(p),mi(q));
        m=max(m,mi(r));
    
        for (I=m;I<=16;I++){
           // if (I!=10) 
            {p1=to(p);q1=to(q);r1=to(r);}
            if (r1==p1*q1*1l) break;
        }
        cout<<(I>16?0:I);
        return 0;
    }
    
    • 1

    信息

    ID
    6952
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    (无)
    递交数
    24
    已通过
    6
    上传者