解题思路: 这道题 其实不难,两种思路,两种复杂度,思路一、分别求1 到 n 得阶乘,求完之后,再相加,但是这样得话,复杂度就会是O(n^2)
思路二、这里用到一个公式,就是n的阶乘 等于n - 1的阶乘乘以n,所以,我们就可以递推进行相加。
注意事项:
数据会很大所以要开long long
参考代码:
#include<iostream> using namespace std; int n; int main() { cin >> n; long long sum = 0,x = 1; for(int i = 1; i <= n; i++) { x = x*i; sum += x; } cout << sum; return 0; }
0.0分
5 人评分
C语言程序设计教程(第三版)课后习题3.7 (C++代码)浏览:1024 |
矩形面积交 (C语言代码)浏览:1553 |
数列 (C++代码)浏览:707 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:981 |
【偶数求和】 (C++代码)浏览:786 |
十->二进制转换 (C语言代码)浏览:1330 |
蛇行矩阵 (C语言代码)浏览:792 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1215 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:910 |