解题思路:
利用双层for循环嵌套,外层模拟每个阶乘数的累加,内层模拟每个数的阶乘,每次求出部分阶乘的结果,并加
入总结果中
注意事项:
本题输入变量的数据范围是20以内,大家可以试验实验输入19,会发现输出了一个负数,说明结果的大小超出
了int类的储存范围,故需要用long long类的变量来储存部分结果和总结果。
参考代码:
#include<iostream> using namespace std ; int main() { long long sn = 0 ;//总结果 int n ;//输入 cin>>n ; long long sum = 1 ;//部分阶乘结果 for(int i = 1;i <= n;i++)//每个阶乘数的累加 { for(int j = 1;j <= i;j++)//阶乘内部计算 { sum *= j ; } sn += sum ;//将每部分阶乘的计算结果加入总结果 sum = 1 ;//回溯,初始化,方便储存下次循环的部分结果 } cout<<sn<<endl ;//输出结果 return 0 ; }
0.0分
58 人评分
#include<stdio.h> int main() { int n,i,j,num2=0,num1=1; scanf("%d",&n); for(i=1;i<=n;i++) { int num1=1; for(j=i;j>0;j--) { num1=num1*j; } num2=num2+num1; } printf("%d",num2); return 0; }我也是错的 但运行是对的
#include<stdio.h> int main() { int n; scanf("%d",&n); long long sum=0,i; int t=1; for(i=1;i<=n;i++) { t*=i; sum+=t; } printf("%lld",sum); } x
#include<stdio.h> int main() { int r=1,n,q=0; scanf("%d",&n); for(int p=1;p<=n;p++){ for(int i=1;i<=p;i++){r*=i;} q+=r; r=1; } printf("%d",q); return 0; }这样为什么是错的呢?
#include <iostream> using namespace std; int main() { int n,i=1,sum=0,t=1; cin>>n; while(i<=n) { t=t*i; sum+=t; i++; } cout<<sum; }
#include <stdio.h> unsigned long long f(int n) { if(n==1) return 1; else return n*f(n-1); } int main() { int i,n; unsigned long long Sn=0; scanf("%d",&n); for(i=0;i<n;i++) { Sn+=f(i+1); } printf("%llu",Sn); return 0; }
Cauchy 2020-04-22 15:32:16 |
递归:f(n)=n*f(n-1)
#include<iostream> using namespace std; int main() { int n,long long Sn=0,i,long long sn=1; cin >> n; while(n--) { for (i = n; i>0 ; i--) { sn = sn * i; } Sn = Sn + sn; sn = 1; } cout << Sn << endl; return 0; } 为什么这样不行呢
象帝之先 2020-04-10 19:10:21 |
不同类型定义变量要分开定义用;隔开 while循环的限制条件有问题,判断时的n和循环内的n不一样大,建议不要用while
#include<iostream> using namespace std; int main() { int n; cin >> n; long long sum=0,index=1;//128,425,485,935,180,313 128,425,485,935,180,313 for(int i=1;i<=n;i++){ index*=i; sum+=index; } cout << sum; return 0; } 我试了1~19全部数据,全部正确,为啥提交就WA???
#include<stdio.h> #include "stdafx.h" int main() { int s,n,i,a; scanf("%d",&n); if(n>1&&n<20) { s=1; a=1; for(i=1;i<n;i++) { a=a*(i+1); s=s+a; } } if(n==1) s=1; printf("%d\n",s); return 0; } 为什么有错误呢
冲进前五百冲鸭 2020-03-08 11:13:24 |
如果n等于1 是不是s和a就属于未定义呢
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:640 |
哥德巴赫曾猜测 (C语言代码)浏览:1153 |
C语言训练-求PI* (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:631 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
WU-输入输出格式练习 (C++代码)浏览:1140 |
母牛的故事 (C语言代码)浏览:1055 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:636 |
判定字符位置 (C语言代码)浏览:849 |
杨辉三角 (C语言代码)浏览:737 |