解题思路

这是一个等差数列求和问题。给定一个从2开始、公差为3的等差数列,需要求出前n项的和。

关键点

  1. 数据范围:

  2. 等差数列特点:

    • 首项
    • 公差
    • 第n项通项公式:
  3. 求和方法:

    • 使用等差数列求和公式:
    • 或者:

代码

#include <iostream>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        // 使用等差数列求和公式
        // 首项a₁ = 2,公差d = 3
        // 第n项 aₙ = 2 + (n-1)*3
        // 和 Sₙ = n(a₁ + aₙ)/2
        long long sum = (long long)n * (4 + (n-1)*3) / 2;
        cout << sum << endl;
    }
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            // 使用等差数列求和公式
            // 首项a₁ = 2,公差d = 3
            // 第n项 aₙ = 2 + (n-1)*3
            // 和 Sₙ = n(a₁ + aₙ)/2
            long sum = (long)n * (4 + (n-1)*3) / 2;
            System.out.println(sum);
        }
    }
}
while True:
    try:
        n = int(input())
        # 使用等差数列求和公式
        # 首项a₁ = 2,公差d = 3
        # 第n项 aₙ = 2 + (n-1)*3
        # 和 Sₙ = n(a₁ + aₙ)/2
        sum = n * (4 + (n-1)*3) // 2
        print(sum)
    except:
        break

算法及复杂度

算法分析

  1. 计算过程:

    • 使用等差数列求和公式直接计算
    • 避免使用循环累加,提高效率
    • 注意使用长整型避免溢出
  2. 公式推导:

    • 首项
    • 公差
    • 第n项
    • 求和公式
    • 代入得:

复杂度分析

  • 时间复杂度: - 使用公式直接计算,不需要循环
  • 空间复杂度: - 只需要常数级的额外空间