#1547. 珅泽教育CSP-J第一轮模拟考第三套 第 31 题

珅泽教育CSP-J第一轮模拟考第三套 第 31 题

第三题

#include<iostream>
int mem[2000000] = {0};
int q[2000000] = {0};
int main()
{
    int r, b;
    std::cin >> r >> b;
    int step = 0;
    while (r != 0) {
        step++;
        if (mem[r] > 0) {
            break;
        }
        else {
            mem[r] = step;
        }
        q[step] = r * 2 / b;
        r = r * 2 % b;
    }
    std::cout << "0.";
    if (r == 0) {
        for (int i = 1; i <= step; ++i) std::cout << q[i];
    }
    else {
        int begin = mem[r];
        for (int i = 1; i < begin; ++i)
            std::cout << q[i];
        std::cout << "(";
        for (int i = begin; i < step; ++i)
            std::cout << q[i];
        std::cout << ")";
    }
}

b=2000000b=2000000 且循环节长度为 b1b-1 时,程序会运行时错误。

{{ select(1) }}

  • 正确
  • 错误