关于正整数拆分成两个正整数

一开始的时候有一个正整数,接下来双方轮流执行以下操作:把这个正整数按照加法的逆运算任意拆为两个正整数,由另一方选择一个保留,并把保留的这个数再次拆为两个正整数。依次这样下去,直到有一方无法再完成拆数的操作时告负。

你是要模拟这个游戏么?参考下:


#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "请输入一个正整数:";
    cin >> num;

    int player = 1;  // 当前玩家,1代表玩家1,2代表玩家2
    while (num > 0) {
        cout << "现在是玩家" << player << "的回合,请拆分数字:" << num << endl;
        int a, b;
        cout << "请输入两个正整数,中间用空格隔开:";
        cin >> a >> b;

        // 检查拆分是否合法
        if (a <= 0 || b <= 0 || a + b != num) {
            cout << "拆分不合法,请重新输入!" << endl;
            continue;
        }

        // 让另一个玩家选择保留的数
        cout << "请玩家" << (player == 1 ? 2 : 1) << "选择保留的数:";
        int reserve;
        cin >> reserve;

        // 检查保留的数是否合法
        if (reserve < a || reserve > b) {
            cout << "保留的数不合法,请重新选择!" << endl;
            continue;
        }

        // 更新剩余数字
        num = reserve;

        // 切换玩家
        player = (player == 1 ? 2 : 1);
    }

    // 当有一方无法再完成拆数操作时,告负
    cout << "玩家" << player << "告负!" << endl;

    return 0;
}