1761. 珅泽教育CSP-J第一轮模拟考第八套 第 20 题

珅泽教育CSP-J第一轮模拟考第八套 第 20 题

二、阅读程序·第1题(选择题)

void solve1(int n)
{
    if (n == 0) return;
    int lowbit = n & 1;
    solve1((n - lowbit) / -2);
    std::cout << lowbit;
}

void solve2(int n)
{
    int a[100];
    int size = 0;
    while (n != 0)
    {
        int lowbit = n % 2;
        if (lowbit == -1) lowbit = 1;

        a[size++] = lowbit;
        n = (n - lowbit) / -2;
    }

    if (size == 0) {
        std::cout << 0;
    }
    else {
        while (size > 0)
        {
            int highbit = a[--size];
            std::cout << highbit;
        }
    }
}

保证 solve1 与 solve2 的参数 n 是整数。

solve1(n) 与 solve2(n) 的时间复杂度为( )。

{{ select(1) }}

  • Θ(log⁡n)\Theta(\log n),Θ(log⁡n)\Theta(\log n)
  • Θ(log⁡n)\Theta(\log n),Θ(n)\Theta(n)
  • Θ(n)\Theta(n),Θ(log⁡n)\Theta(\log n)
  • Θ(n2)\Theta(n^2),Θ(n)\Theta(n)