阅读程序题

#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;
}

假设输入的 n 在 int 范围内,k 为不小于 2 且不大于 36 的正整数,完成下面的判断题和单选题:

1.

该算法的时间复杂度为

(1.5分)
2.

删除第 23 行的强制类型转换,程序的行为不变。

(1.5分)
3.

除非输入的 n 为 0,否则程序输出的字符数为

(1.5分)
4.

当输入为 100 7 时,输出为( )。

(3分)
5.

当输入为 -255 8 时,输出为( )。

(3分)
6.

当输入为“1000000 19”时,输出为( )。

(3分)