1010.Radix (25) 溢出

简介: #include #include #include using namespace std;string n1, n2;long long get_num(char &c){ if(isdigit(c)...
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
string n1, n2;

long long get_num(char &c){
    if(isdigit(c)) return c - '0';
    else return c - 'a' + 10;
}
long long get_n(long long &r, string &n){
    long long s = 0;
    for (int i = 0; i < n.size(); i++) {
        s = s * r + get_num(n[i]);
    }
    return s;
}

int main(){
    long long tag, radix;
    cin >> n1 >> n2 >> tag >> radix;
    if(tag == 2) swap(n1, n2);
    long long num1 = get_n(radix, n1);
    long long left = 2, right = num1 + 1;
    for (int i = 0; i < n2.size(); i++) {
        left = max(left, get_num(n2[i])+1);
    }
    while (left <= right) {
        long long mid = (left + right) / 2;
        long long num2 = get_n(mid, n2);
        if(num2 > num1 || num2 < 0){
            right = mid - 1;
        }else if(num1 == num2){
            cout << mid << endl;
            return 0;
        }else{
            left = mid + 1;
        }
    }
    cout << "Impossible\n";
    return 0;
}

目录
相关文章
溢出行为
在 Julia 中,超出类型最大值的计算会导致环绕行为,如 `typemax(Int64)` 加 1 结果变为 `typemin(Int64)`,显示了模算术特性。为了避免溢出错误,需检查边界或使用 BigInt 进行任意精度运算。例如,`10^19` 溢出,而 `big(10)^19` 则正确计算为 `10000000000000000000`。
|
7月前
|
人工智能
PTA-找出整型数组中最大值的函数
找出整型数组中最大值的函数
151 0
|
7月前
|
C语言
C语言中通过INT_MAX判断两个非负整数相加是否溢出
C语言中通过INT_MAX判断两个非负整数相加是否溢出
169 0
|
编译器
整数溢出机制 C
整数溢出机制 C
289 0
|
存储 人工智能 C语言
整型在内存中的存储,整型最大值最小值的推导,以及大小端的介绍
整型在内存中的存储,整型最大值最小值的推导,以及大小端的介绍
51nod 1292 字符串中的最大值 V2 (后缀数组)
51nod 1292 字符串中的最大值 V2 (后缀数组)
60 0
|
C语言
【C】替换空格,宏实现整数的二进制奇偶位交换
【C】替换空格,宏实现整数的二进制奇偶位交换
67 0
【C】替换空格,宏实现整数的二进制奇偶位交换
C++二分有关溢出的问题
C++二分有关溢出的问题
91 0
C++二分有关溢出的问题
|
存储 算法
整数反转问题(符号与越界问题)
整数反转问题(符号与越界问题)
160 0
整数反转问题(符号与越界问题)