电子学会编程等级考试二级-函数

电子学会编程等级考试二级-函数

1.13-34

确定进制

#include<bits/stdc++.h>
using namespace std;
int bs[]={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int toTen(int b,int x){//b进制 x转10进制 
    int power=1;//最右边开始处理 第一位2^0=1 
    int ret=0;
    while(x>0){
        if(x%10>=b){//如果某一位比进制大,就不可能是这个进制 返回-1特殊处理 
            return -1;
        }
        ret =ret+(x%10*power);//当前位取*权值累加到ret 
        x/=10;
        power=power*b;//每左移一位 power*b 
    }
    return ret;
}
int p,q,r;
int main(){
    cin>>p>>q>>r;
    for(int i=0;i<15;i++){// 2-16 逐一转10进制 
        int pt=toTen(bs[i],p);
        int qt=toTen(bs[i],q);
        int rt=toTen(bs[i],r);
        if(pt==-1 || qt==-1 || rt==-1){//如果不可能是某进制 continue 
            continue;
        }
        if(pt*qt==rt){//10进制 符号条件 输出 return 
            cout<<bs[i];
            return 0;
        }
    }
    cout<<0;//没有return 说明没有符合的 
    return 0;
}

 

posted @ 2021-08-01 18:29  new-code  阅读(92)  评论(0编辑  收藏  举报