东方博宜OJ 4947:猴子摘桃 ← 循环结构
2026/6/14 10:05:33 网站建设 项目流程

【题目来源】
https://oj.czos.cn/p/4947

【题目描述】
花果山上有一只猴子,每天都去蟠桃园摘桃子。
第一天,猴子只摘了一个桃子,之后两天(第二天和第三天),猴子每天都摘两个桃子,之后三天(第四、五、六天),猴子每天都摘三个桃子,之后四天(第七、八、九、十天),猴子每天都四个桃子……这种模式会一直持续下去,因为蟠桃园里的桃子无穷无尽,请计算在前 n 天里,猴子一共摘了多少个挑子。

【输入格式】
输入只有一行,一个正整数 n,表示前 n 天。(1≤n≤1000)​​​​​​​

【输出格式】
输出只有一行,一个正整数,表示前 n 天猴子一共摘了多少个桃子。​​​​​​​

【输入样例】
6

【输出样例】
14

【数据范围】
1≤n≤1000​​​​​​​

【算法分析】
本题来源于2024 年信息素养大赛 C++ 算法创意挑战赛复赛真题(小学组)。

【算法代码一】

#include <bits/stdc++.h> using namespace std; int n,sum; int k=1; //当前分组每天摘的桃子数 int main() { cin>>n; while(n) { int days=min(k,n); //当前分组实际天数 sum+=k*days; n-=days; k++; } cout<<sum; return 0; } /* in:6 out:14 */

【算法代码二】

#include <bits/stdc++.h> using namespace std; int total=0; // 总桃子数 int days=0; // 已计算的天数 int group=1; // 当前组每天摘的桃子数 int n; int main() { cin>>n; while(days<n) { for(int i=1; i<=group; i++) { if(days>=n) break; total+=group; days++; } group++; } cout<<total<<endl; return 0; } /* in:6 out:14 */




【参考文献】
https://oj.czos.cn/p/4947




需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询