P1009 阶乘之和 洛谷
https://www.luogu.org/problem/show?pid=1009
题目描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=54321。
输入输出格式
输入格式:
一个正整数N。
输出格式:
一个正整数S,表示计算结果。
输入输出样例
输入样例#1:
3
输出样例#1:
9
1 #include <algorithm> 2 #include <iostream> 3 4 using namespace std; 5 6 int n; 7 int sum[505],mul[505]; 8 9 void multiply(int k) 10 { 11 int x=0; 12 for(int i=1;i<=mul[0];i++) 13 { 14 mul[i]=mul[i]*k+x; 15 if(mul[i]>9) 16 { 17 x=mul[i]/10; 18 mul[i]%=10; 19 mul[0]=max(mul[0],i+1); 20 } 21 else x=0; 22 } 23 24 } 25 26 void add() 27 { 28 int x=0,k=max(mul[0],sum[0]); 29 for(int i=1;i<=k;i++) 30 { 31 sum[i]=sum[i]+mul[i]; 32 sum[i+1]+=sum[i]/10; 33 sum[i]%=10; 34 //sum[0]++; 35 } 36 } 37 38 int main() 39 { 40 cin>>n; 41 mul[0]=1;sum[0]=1;mul[1]=1;sum[1]=1; 42 for(int i=2;i<=n;i++) 43 { 44 multiply(i); 45 add(); 46 } 47 for(int i=max(sum[0],mul[0]);i>=1;i--) 48 cout<<sum[i]; 49 return 0; 50 }
——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。