1 条题解

  • 0
    @ 2033-8-13 1:49:46

    晨跑打卡

    解题思路

    总圈数为1+2+…+n。把正序与逆序相加,每对均为n+1,共n对,所以两倍总和等于n(n+1),原总和为n(n+1)/2。

    直接用公式计算,避免逐天枚举。

    正确性说明

    正序和与逆序和包含相同的n项,两者相加逐项得到n个n+1,故公式成立;它覆盖n=1等所有合法输入。

    易错点

    n=100000时结果5000050000超过32位int,n和乘积必须使用long long。

    复杂度

    时间O(1),空间O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long n;
        cin >> n;
        cout << n * (n + 1) / 2 << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    602
    时间
    1000ms
    内存
    256MiB
    难度
    入门
    标签
    递交数
    10
    已通过
    3
    上传者