解题思路:
因爲僅有一個輸入與輸出,且爲整數,所以我們可以用cin,cout以加快速度。
則前三行為:
#include<iostream>//使用cin,cout以達到最優解 using namespace std; int main() 對於1!+2!+3!+4!+......+n!,我們可設參數i以將階乘進行到n;設參數t以計算階乘;設參數s以計算和。 則有: { short n;//n<=20则i,n皆可用短整型來定義。 long long t=1,s=0;//s最大可達1!+2!+3!+......+20!,t最大可達20!,須用超長整型。 cin>>n; for(short i=1;i<=n;i++) { t*=i; s+=t; } cout<<s; return 0; } 而for循環可改爲while,顳部可改爲: for(short j=1,t=1;j<=i;i++) t*=j; s+=t; 但考慮到n!=(n-1)!*n,故作此簡略。
注意事项:
任意short皆可改爲int甚至long long,但s與t只能是超長整型。
用printf,scanf在少次輸入與輸出整數方面比cin,cout慢,但也可滿足。
参考代码:
#include<iostream>
using namespace std;
int main()
{
short n,i;
long long t=1,s=0;
cin>>n;
for(i=1;i<=n;i++)
{
t*=i;
s+=t;
}
cout<<s;
return 0;
}
0.0分
2 人评分
大小写转换 (C语言代码)浏览:904 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1292 |
【偶数求和】 (C语言代码)浏览:588 |
Wu-求圆的面积 (C++代码)浏览:1994 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:616 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:821 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |