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

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

二、阅读程序·第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 是整数。

两段程序中计算 lowbit 的方法( )。

{{ select(1) }}

  • 完全等价
  • 仅在 n 为正整数时成立
  • 仅在 n 为非负整数时成立
  • 仅在 n 为负整数时成立