如题
我给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.
是的,直到现在都没算出来。