解题思路
这是一个等差数列求和问题。给定一个从2开始、公差为3的等差数列,需要求出前n项的和。
关键点
-
数据范围:
-
等差数列特点:
- 首项
- 公差
- 第n项通项公式:
- 首项
-
求和方法:
- 使用等差数列求和公式:
- 或者:
- 使用等差数列求和公式:
代码
#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
算法及复杂度
算法分析
-
计算过程:
- 使用等差数列求和公式直接计算
- 避免使用循环累加,提高效率
- 注意使用长整型避免溢出
-
公式推导:
- 首项
- 公差
- 第n项
- 求和公式
- 代入得:
- 首项
复杂度分析
- 时间复杂度:
- 使用公式直接计算,不需要循环
- 空间复杂度:
- 只需要常数级的额外空间