【题目来源】
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