2020:【例4.5】第几项
时间限制: 1000 ms 内存限制: 65536 KB
提交数:62827 通过数: 43671
【题目描述】
对于正整数n,m求s=1+2+3……+n,当加到第几项时,s的值会超过m?
【输入】
输入m。
【输出】
输出n。
【输入样例】
1000
【输出样例】
45
【提示】
【数据范围】
对于全部数据:1≤m≤400001。
思路分析
这段代码的主要功能是求解一个数学问题:对于给定的正整数m,需要找到最小的正整数n,使得从1加到n的和(即等差数列的前n项和)首次超过m。
实现这个功能的思路是,从1开始累加,每次累加当前项的值到总和s中,并同时递增项数n。当累加的总和s首次超过m时,就找到了满足条件的n,并输出。
示例代码
#include<bits/stdc++.h> // 引入标准库,包含各种常用功能
using namespace std; // 使用标准命名空间
int main()
{
long long n=0, s=0, m; // 初始化项数n为0,总和s为0,用于存储输入的m
cin >> m; // 从标准输入读取m的值
while(s <= m) // 当累加总和s小于等于m时,继续累加
{
++n; // 项数n递增
s += n; // 将当前项n的值累加到总和s中
}
// 循环结束后,s的值已经超过了m,因此此时的n是满足条件的最小值
cout << n; // 输出n的值
return 0; // 程序正常结束
}