题目要求计算:
i=1∑ni=1+2+⋯+n直接枚举从 1 到 n 累加可以得到答案,但时间复杂度为 O(n),当 n 很大时效率较低。
这里使用数学中“等差数列求和公式”:
1+2+⋯+n=2n×(n+1)算法步骤(使用等差数列公式):
n * (n + 1) / 2 计算结果为避免溢出问题,在 Java 和 C++ 中使用长整型(long / long long)来存储结果。
# 功能函数:计算 1 到 n 的和
def sum_to_n(n):
# 使用等差数列求和公式 n * (n + 1) // 2
return n * (n + 1) // 2
def main():
# 从标准输入读取一个整数 n
n = int(input().strip())
# 计算答案
ans = sum_to_n(n)
# 输出结果
print(ans)
if __name__ == "__main__":
main()
import java.util.Scanner;
public class Main {
// 功能函数:计算 1 到 n 的和
public static long sumToN(long n) {
// 使用等差数列求和公式 n * (n + 1) / 2
return n * (n + 1) / 2;
}
public static void main(String[] args) {
// 创建输入对象
Scanner sc = new Scanner(System.in);
// 读入一个正整数 n
long n = sc.nextLong();
// 计算答案
long ans = sumToN(n);
// 输出结果
System.out.println(ans);
sc.close();
}
}
#include <iostream>
using namespace std;
// 功能函数:计算 1 到 n 的和
long long sumToN(long long n) {
// 使用等差数列求和公式 n * (n + 1) / 2
return n * (n + 1) / 2;
}
int main() {
long long n;
// 从标准输入读取一个整数 n
cin >> n;
// 计算答案
long long ans = sumToN(n);
// 输出结果
cout << ans << endl;
return 0;
}
牛牛最近学会了一些简单的数学运算,例如 ∑i=1n 请你帮他模拟一下这个运算。(即 1+2+3....+n−1+n )
输入仅一个正整数 n
请你计算 ∑i=1n
输入
4
输出
10
本题属于以下题库,请选择所需题库进行购买