zoukankan      html  css  js  c++  java
  • 一本通 确定进制

     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;
    }
  • 相关阅读:
    日志模块
    模块介绍3
    模块介绍2
    模块介绍
    迭代器
    Python装饰器续/三元表达式/匿名函数
    Python装饰器详解
    LATEX LIAN XI
    BELLMAN 最短路算法
    B阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/hxh88/p/9346677.html
Copyright © 2011-2022 走看看