#1783. 珅泽教育CSP-J第一轮模拟考第八套 第 42 题

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

第2题

有三种操作可以修改一个变量的值:

  • 增加:将变量加一;
  • 减少:将变量减一;
  • 翻倍:将变量翻倍。

函数 solve(x, y) 用于求解最少需要几步操作,才能将变量的值从 xx 变成 yy

std::map<int, int> mem;
int solve(int x, int y)
{
    int base = std::max(x - y, y - x);

    if (____(1)____)
        return ____(2)____;

    if (____(3)____)
        return mem[y];

    int reduce;
    if (____(4)____)
    {
        reduce = ____(5)____;
    }
    else
    {
        reduce = std::____(6)____;
    }

    mem[y] = std::____(7)____;
    return mem[y];
}

(3) 处应填( )。

{{ select(1) }}

  • mem[y]
  • mem.count(y)
  • mem[x]
  • mem.count(x)