东方博宜1145 - 数列求和

题目描述

有一数列如下: 1 2 4 7 11 16 22… 试求该数列前 N 项之和。

输入

一个整数 N ( 0<N<1000 )。

输出

一个整数。

样例

输入

6

输出

41

代码1

#include <iostream>

int main() {
    int N;
    std::cin >> N;

    int sum = 0;
    int increment = 1;
    int current = 1;

    for (int i = 1; i <= N; ++i) {
        sum += current;
        current += increment;
        increment++;
    }

    std::cout << sum << std::endl;

    return 0;
}

这段代码根据给定的 N 值,使用循环来计算数列前 N 项的和。在每次循环中,将当前项的值累加到 sum 中,并更新当前项和递增的数列值。循环执行 N 次后,得到数列前 N 项的和,将其输出。

代码2

当我们观察序列 1, 2, 4, 7, 11, 16, ... 时,我们可以发现每一项都是前一项加上一个递增的数列,递增的数列从 1 开始,每次递增 1。所以我们可以利用数学公式来计算数列前 N 项的和。

数列的第 n 项可以表示为 (a_n = a_{n-1} + (n-1)),其中 (a_1 = 1)。我们可以将这个公式改写为 (a_n = a_1 + (1+2+3+...+(n-1)))。

式子 (1+2+3+...+(n-1)) 可以使用数学公式求和得到,即 (1+2+3+...+(n-1) = \frac{{(n-1) \cdot n}}{2})。将这个公式代入前面的公式,我们可以得到 (a_n = a_1 + \frac{{(n-1) \cdot n}}{2})。

因此,要计算数列前 N 项的和,我们只需要将 (n) 替换为 (N) 并计算即可。

#include <iostream>

int main() {
    int N;
    std::cin >> N;

    int sum = 1 + (N - 1) * N / 2;

    std::cout << sum << std::endl;

    return 0;
}

这段代码首先读取输入的 N 值,然后使用数学公式计算数列前 N 项的和,并将结果输出。

这种方法更简洁,直接利用数学公式来计算,不需要使用循环进行累加,效率更高。

希望对您有所帮助!如果您还有其他问题,请随时提问。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值