题目:猜数游戏

题目描述: 小明正在和小红玩一个猜数游戏。小明先想好一个数,然后小红每次猜一个数,并告诉小明猜的数是大了还是小了。小明会根据小红的提示调整答案,直到小红猜到正确的数为止。现在请你帮助小红写一个程序,根据小明的提示猜出正确的数。

输入格式: 共一行,包含两个整数n和m,分别表示小明所想的数和小红猜的次数。

输出格式: 共m行,每行一个整数,表示小红猜的数。

输入样例: 10 4

输出样例: 5 7 8 9

解题思路: 根据题目描述,我们可以使用二分查找的思想来猜数。首先确定猜数范围的上下界,即最小值和最大值。然后通过二分查找的方式猜数,每次根据小明的提示调整猜数的范围。

具体实现:

  1. 读入小明所想的数n和猜的次数m。
  2. 初始化最小值为1,最大值为n。
  3. 使用二分查找的方式猜数,循环m次:
    • 计算猜数的中间值mid = (min + max) / 2。
    • 输出猜的数mid。
    • 根据小明的提示调整猜数的范围:
      • 如果mid大于n,则令max = mid - 1。
      • 如果mid小于n,则令min = mid + 1。
  4. 输出完整的代码。
#include <iostream>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    int min = 1, max = n;
    for (int i = 0; i < m; i++) {
        int mid = (min + max) / 2;
        cout << mid << endl;

        char hint;
        cin >> hint;
        if (hint == 'G') {
            max = mid - 1;
        } else if (hint == 'L') {
            min = mid + 1;
        } else {
            break;
        }
    }

    return 0;
}

这段代码使用二分查找的思想猜数,通过不断调整猜数的范围来获取答案。在每次猜数后,根据小明的提示更新猜数的范围。当小红猜到正确的数或者达到猜数次数上限时停止猜数

为httpswwwluogucomcnproblemP7881中的题目写一篇题解并给出完整代码

原文地址: https://www.cveoy.top/t/topic/ipw4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录