#1159. [CSP2022 提高级] 第 28 题

[CSP2022 提高级] 第 28 题

(3)

 #include <iostream>
 #include <algorithm>
 
 using namespace std;
 
 const int MAXL = 1000;
 
 int n, k, ans[MAXL];
 
int main(void) 
{
    cin >> n >> k;
    if (!n) cout << 0 << endl;
    else 
    {
        int m = 0;
        while (n) 
        {
            ans[m++] = (n % (-k) + k) % k;
            n = (ans[m - 1] - n) / k;
        }
        for (int i = m - 1; i >= 0; i--)
            cout << char(ans[i] >= 10 ?
                         ans[i] + 'A' - 10 :
                         ans[i] + '0');
        cout << endl;
    }
    return 0;
}

假设输入的 nint 范围内,k 为不小于 22 且不大于 3636 的正整数,完成下面的判断题和单选题:

判断题

该算法的时间复杂度为O(logkn)O(\log_k n)

{{ select(1) }}

  • 正确
  • 错误