C++ 计算奇数和的累加 - 算法题解
C++ 计算奇数和的累加 - 算法题解
题目描述
设 'f(x)' 表示 1 到 x 中所有奇数之和。
请计算出 'S(n) = f(1) + f(2) + f(3) + ... + f(n)'。
输入格式
一个正整数 'n'。
输出格式
一个正整数 'S(n)',表示计算结果。
样例 #1
样例输入 #1
6
样例输出 #1
28
样例 #2
样例输入 #2
101
样例输出 #2
88451
提示
'f(1)=1'
'f(2)=1'
'f(3)=1+3=4'
'f(4)=1+3=4'
'f(5)=1+3+5=9'
'f(6)=1+3+5=9'
'S(6)=f(1)+f(2)+f(3)+f(4)+f(5)+f(6)=1+1+4+4+9+9=28'
数据范围
对于 30% 的数据,'n <= 10'
对于 100% 的数据,'n <= 500'
代码实现
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
int oddSum = 0;
for (int i = 1; i <= n; i++) {
oddSum += i % 2 != 0 ? i : 0;
sum += oddSum;
}
cout << sum << endl;
return 0;
}
算法分析
该算法使用两个循环来计算 'S(n)'。第一个循环用于计算 1 到 'i' 之间的奇数和,第二个循环用于累加所有奇数和。
算法的时间复杂度为 'O(n)',空间复杂度为 'O(1)'。
总结
本题是一道简单的循环计算题,考察了对循环和条件语句的理解和运用。通过本题可以学习如何用 C++ 代码实现简单的算法,并分析算法的时间复杂度和空间复杂度。
原文地址: https://www.cveoy.top/t/topic/phOc 著作权归作者所有。请勿转载和采集!