POJ1331确定进制

来源:互联网 发布:淘宝客服在哪里应聘 编辑:程序博客网 时间:2024/04/28 13:18
#include <iostream>#include <cstdio>#include <cstring>using namespace std;//将输入的b进制数转换为十进制数表示int b2ten(int p, int b){    //利用字符串来存储各个位    char temp[100];    int ret = 0;    sprintf(temp, "%d", p);    //temp[i]从temp[0]开始依次表示最高位,次高w位...    int len = strlen(temp);    for(int i = 0; i < len; ++i)    {        if((temp[i] - '0') >= b)        return -1;        //将b进制转换为10进制        //当下一个i存在时前一个ret就要乘以b,比如当时三位数时,        //当取最高位时只有下一位存在时才将原来的ret乘以b        ret *= b;//i每加1则上一个ret就要多成个b即((temp[0] * b) + temp[1]) * b + ...                //也就是说没出现新的i前面的ret就要乘以b        ret += temp[i] - '0';    }    return ret;}//int main(){    int T;    int p;    int q;    int r;    int b;    cin >> T;    while(T--)    {       cin >> p >> q >> r;        for(b = 2; b <= 16; ++b)        {            long p2 = b2ten(p, b);            long q2 = b2ten(q, b);            long r2 = b2ten(r, b);            if(p2 == -1 || q2 == -1 || r2 == -1)            continue;            if(p2 * q2 == r2)            {                cout << b << endl;                break;            }        }        if(b == 17)        cout << 0 << endl;    }    return 0;}

原创粉丝点击