1 条题解

  • 1

    #include <iostream>
    using namespace std;

    void Mul(int x, int n, int k) {
    int a[100000] = { 0 }; // 存储计算结果的数组,初始为全零
    int b = 0; // 进位数
    a[99999] = 1;

    // 高精度幂运算
    for (int i = 0; i < n; i++) {
    int j = 99999;
    while (j >= 0) {
    // 计算当前位的乘积并加上进位数
    a[j] = a[j] * x + b;
    b = a[j] / k; // 计算进位数
    a[j] = a[j] % k; // 余数作为a[j]
    j--;
    }
    }

    int s;
    // 找到第一个非零数字的位置
    for (s = 0; s < 100000; s++) {
    if (a[s] != 0)
    break;
    }

    if (s == 100000) { // 特判结果为 0 的情况
    cout << '0';
    }
    else {
    while (s < 100000) {
    if (a[s] < 10) {
    cout << a[s];
    }
    else {
    cout << static_cast<char>('A' + a[s] - 10);
    }
    s++;
    }
    }
    }

    int main() {
    int x, n, k;

    cin >> x >> n >> k;

    Mul(x, n, k);

    return 0;
    }

  • 1

信息

ID
1072
难度
5
分类
(无)
标签
递交数
31
已通过
14
通过率
45%
上传者