1 条题解
-
0
自动搬运
来自洛谷,原作者为

daiarineko
我们犯罪没得手,任你何进有先人 | 有勾 8 了搬运于
2025-08-24 21:07:41,当前版本为作者最后更新于2021-07-04 09:53:46,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意简述
求 。
解法1
复杂度:
题目要求的解法,使用递归。
具体讲一下
f函数,这里f(n)的定义是 。其中 $\sum\limits^n_{i=1} i = (\sum\limits^{n-1}_{i=1} i)+n$,所以可以递归地调用
f函数:return f(n-1)+n。递归的结束条件:
n==1,这时候 ,直接返回。(亦可在
n==0时返回0)。#include<bits/stdc++.h> using namespace std; int f(int n){ if(n==1)return 1; return f(n-1)+n; } int main(){ int n; cin>>n; cout<<f(n)<<endl; return 0; }解法2
复杂度:
可以使用数学解法降低复杂度。
我们都知道等差数列的通项公式:(首项+末项)*项数/2。
其中首项为 ,末项为 ,项数为 。
代入公式得 。
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; cout<<n*(n+1)/2<<endl; return 0; }此解法在 非常大时性能很好。
- 1
信息
- ID
- 6999
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者