一本通 确定进制

Posted hxh88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一本通 确定进制相关的知识,希望对你有一定的参考价值。

 http://ybt.ssoier.cn:8088/problem_show.php?pid=1413

注意一些细节问题就可以了。

1、余数必定小于进制数

2、注意判断数字范围

1<=p,q,r<=1000000

开始以为p*q会很大,但是实际

p*q<=1000000;

因为p*q=r<10000000;

所以,本身没有必要使用高精度,

但是如果本题目使用高精度来计算。

则需要运用大整数的相关技巧来解决这个问题了。

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;

int ntoT(int k,int num)//num从k进制转10进制
{
    int w = 1;//weishu
    int ans = 0;
    while (num)
    {
        int y = num % 10;
        if (y > k)//余数必须小于等于进制数
            return -1;
        ans += y*w;
        w *= k;
        num /= 10;
    }
    return ans;
}

int main()
{
    int p, q, r;
    cin >> p >> q >> r;
    int i;
    for (i = 2; i < 41; i++)
    {
        int p1 = ntoT(i, p);
        if (p1 < 0)
            continue;
        int q1 = ntoT(i, q);
        if (q1 < 0)
            continue;
        int r1 = ntoT(i, r);
        if (r1 < 0)
            continue;
        if (p1*q1 == r1)
        {
            cout << i << endl;
            break;
        }
    }
    if(i==41)
        cout << 0 << endl;
    return 0;
}

 

以上是关于一本通 确定进制的主要内容,如果未能解决你的问题,请参考以下文章

一本通 1223:An Easy Problem

「一本通 5.4 练习 1」涂抹果酱

loj10164. 「一本通 5.3 例 2」数字游戏

#10172. 「一本通 5.4 练习 1」涂抹果酱 题解

#10181. 「一本通 5.5 练习 2」绿色通道

我朋友从俄罗斯给我汇款. SWIFT码没错.账户没错.账户是中国银行的活一本通..为啥那边提示TIME OUT