解题思路:
思路没什么好说的,不考虑时间复杂度的话可以循环加递归求和求解。第二种是利用阶乘求和的性质,避免重复运算达到时间复杂度的优化。
直接上手第二种,边求阶乘边求和。
注意事项:
百分之五十错误的代码基本都是定义的变量范围过小,导致部分大数的程序产生错误。诸如int , float ,double都会超范围。
直接告诉大家,一般大数或者大数组,直接开全局变量或者是用 long long 类型,此题用 long long或者是long double 类型可以完美AC。
附上各变量范围:
整型[signed]int -2147483648~+2147483648
无符号整型unsigned[int] 0~4294967295
短整型 short [int] -32768~32768
无符号短整型unsigned short[int] 0~65535
长整型 Long int -2147483648~+2147483648
无符号长整型unsigned [int] 0~4294967295
字符型[signed] char -128~+127
无符号字符型 unsigned char 0~255
单精度 float 3.4 x 10^(-38)~ 3.4 x 10^(+38)
双精度double 1.7 x 10^(-308)~ 1.7 x 10^(+308)
长双精度 long double 1.7 x 10^(-308)~ 1.7 x 10^(+308)
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
long long sn = 1;
long long sum = 0;
cin>>n;
for(int i = 1; i <= n; i++)
{
sn = sn * i;
sum = sum + sn;
}
printf("%0.lld",sum);
return 0;
}
0.0分
16 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复