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++ 代码实现简单的算法,并分析算法的时间复杂度和空间复杂度。

C++ 计算奇数和的累加 - 算法题解

原文地址: https://www.cveoy.top/t/topic/phOc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录