6 条题解
-
0
Guest
- 1
信息
- ID
- 61
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 128
- 已通过
- 66
- 上传者
#include<bits/stdc++.h> using namespace std; int main() { int n,ans=0,t=1; scanf("%d",&n); for(int i=1;i<=n;i++) { t=t*i; ans=ans+t; } printf("%d",ans); return 0; }
利用嵌套循环来分别进行求阶乘和求和,并用一个变量存放每个数阶乘的值,每次循环最后还要将这个变量重置为1。其实没有必要将这个变量重置为1,仔细思考就会发现:1的阶乘是1,2的阶乘是12,也就是1的阶乘乘2,那3的阶乘就是12*3,也就是2的阶乘乘3,那以此类推,i的阶乘就是i-1的阶乘乘i,那i+1的阶乘就是i的阶乘乘i+1,所以我们在循环中,只要用上一个数的阶乘乘下一个数,就是下一个数的阶乘
#include<bits/stdc++.h> using namespace std; int main() { int n,sum=0; cin>>n; for(int i=1;i<=n;i++) { int ret=1; for(int a=1;a<=i;a++) { ret=ret*a; } sum=ret+sum; } cout<<sum<<endl; }
注册一个 PYYG 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。