1 条题解
-
0
晨跑打卡
解题思路
总圈数为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