c语言对于正整数n,m,求s=1+2+3....+n,当加到第几项时,s的值会超过m?输入描述: 输入m。(1≤ms 1000000000) 输出描述: 输出n。 示例1
时间: 2024-10-23 18:13:02 浏览: 46
C语言实践编程题201509.pdf
在C语言中,可以使用循环和条件判断来解决这个问题。给定一个正整数`m`,你需要找到第一个满足`1 + 2 + ... + i > m`的自然数`i`。这实际上是一个等差数列求和的问题,可以用公式`s = (n * (n + 1)) / 2`来表示前`n`项的和。
算法步骤如下:
1. 初始化一个变量`s`为0,`i`为1。
2. 当`s`小于等于`m`时,增加`i`并更新`s`的值,即`s += i`。
3. 循环直到`s`大于`m`,此时的`i`就是结果。
4. 返回`i - 1`,因为从1开始计数,我们需要减去1得到实际需要加到的项数。
以下是对应的伪代码实现:
```c
int find_NthTerm(int m) {
int s = 0;
for (int i = 1; s <= m; i++) {
s += i;
if (s > m) break;
}
return i - 1;
}
```
输入`m`,调用函数`find_NthTerm(m)`即可得到结果。例如,如果输入`m = 5`,则输出的`n`应该是`3`,因为1+2+3正好等于5。
阅读全文