题解:洛谷 AT_abc425_a Sigma Cubes

【题目来源】

洛谷:AT_abc425_a [ABC425A] Sigma Cubes - 洛谷

【题目描述】

给定一个正整数 \(N\)

对于 \(i=1,2,\ldots,N\),计算 \((-1)^i \times i^3\),并求这 \(N\) 个值的和。

即,求 \(\displaystyle \sum_{i=1}^N (-1)^i \times i^3\) 的值。

【输入】

输入包含一行,格式如下:

\(N\)

【输出】

输出 \(\displaystyle \sum_{i=1}^N (-1)^i \times i^3\) 的值。

【输入样例】

3

【输出样例】

-20

【核心思想】

  1. 问题分析:给定正整数 \(N\),需要计算 \(\sum_{i=1}^{N} (-1)^i \times i^3\) 的值。这是一个直接模拟/公式计算问题,关键在于正确处理交替符号 \((-1)^i\) 并逐项累加立方值。

  2. 算法选择

    • 直接循环累加:遍历 \(i\)\(1\)\(N\),计算 \((-1)^i \times i^3\) 并累加
  3. 关键步骤

    • 读取输入:读入正整数 \(N\)
    • 循环求和\(i\)\(1\)\(N\)):
      • 符号项:\((-1)^i\)\(i\) 为奇数时为 \(-1\)\(i\) 为偶数时为 \(+1\)
      • 累加:\(ans \mathrel{+}= (-1)^i \times i^3\)
    • 输出 \(ans\)
  4. 时间/空间复杂度

    • 时间复杂度:\(O(N)\),循环 \(N\)
    • 空间复杂度:\(O(1)\),仅需常数个变量
  5. 直接模拟的核心思想

    • 逐项计算:按照数学定义直接翻译为代码,每项独立计算后累加
    • 符号控制:利用 pow(-1, i)i % 2 == 0 ? 1 : -1 控制交替符号
    • 适用于"有限项数列求和"类基础问题,当 \(N\) 较小时直接模拟最简洁

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int n;      // 输入的整数n,表示求和项数
int ans;    // 存储最终的求和结果

int main()
{
    // 输入整数n
    cin >> n;

    // 计算交替符号的立方和
    for (int i = 1; i <= n; i++)
    {
        // 计算(-1)^i * i^3 并累加到结果中
        ans += pow(-1, i) * i * i * i;
    }

    // 输出最终结果
    cout << ans << endl;

    return 0;
}

【运行结果】

3
-20
posted @ 2026-08-27 11:02  团爸讲算法  阅读(4)  评论(0)    收藏  举报