我猜这个值算不出来了(

如题
我给ChatGPT出了道题:

请用C++写一个程序,要求是:
有n只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成n份,它拿上自己的一份走了。第2,3,4,5……n只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成n份。由用户自由输入n(n为大于0整数)是,问这堆桃子至少有多少只?

而ChatGPT给出的代码是:

#include <iostream>

long long findMinimumPeaches(int n) {
    long long total_peaches = 1; // 初始情况下,桃子数量至少为1
    bool found = false; // 标记是否找到合适的数量

    while (!found) {
        long long peaches_left = total_peaches; // 初始化当前剩余桃子数量
        bool can_divide = true; // 标记当前情况是否可以平分

        for (int i = 0; i < n; ++i) {
            if ((peaches_left - 1) % n == 0) { // 如果扔掉一只桃子后可以平分
                peaches_left = (peaches_left - 1) * (n - 1) / n; // 更新剩余桃子数量
            } else {
                can_divide = false; // 如果不能平分,则跳出循环
                break;
            }
        }

        if (can_divide) {
            found = true; // 找到符合条件的数量
        } else {
            total_peaches++; // 否则尝试下一个数量
        }
    }

    return total_peaches;
}

int main() { 
    int n;
    std::cout << "请输入猴子的数量 n:";
    std::cin >> n;

    if (n <= 0) {
        std::cout << "输入错误:猴子的数量必须是大于0的整数。" << std::endl;
        return 1;
    }

    long long min_peaches = findMinimumPeaches(n);
    std::cout << "至少有 " << min_peaches << " 只桃子。" << std::endl;

    return 0;
}

我把这串代码扔进了Devcpp里运行,输入的第一个值是5,输出3121.第二个值是10,输出了大概99亿左右的一串数字,计算用时190秒,第三次我输入了20.


是的,直到现在都没算出来。

3 个赞

事实上,这道题

是根据13年一道小学生数学奥赛题改的
原题是5只猴子

3 个赞

7个小时了,还没算出来。

3 个赞

我猜内存超限/死循环

2 个赞

事实上
对于n只猴子
桃子的数目是n^n-n+1

2 个赞