#include <bits/stdc++.h> using namespace std; string jiecheng(int n){ char a[1000000]; a[0]='1'; int len=1; for(int i=2;i<=n;i++){ int jin=0; for(int j=0;j<len;j++){ int t= i*(a[j]-'0')+jin; jin=t/10; a[j]=t%10+'0'; } while(jin>0){ a[len]=jin%10+'0'; len++; jin=jin/10; } } string s=""; for(int i=len-1;i>=0;i--){ //cout<<a[i]; s=s+a[i]; } return s; } string jia(string s1,string s2){ char s3[300]; if(s1.length()<s2.length()){ swap(s1,s2); } int len1=s1.length(); int len2=s2.length(); for(int i=0;i<len1-len2;i++ ){ s2="0"+s2; } int jin=0; for(int i=len1-1;i>=0;i--){ int t=s1[i]-'0'+s2[i]-'0'+jin; jin=t/10; s3[i]=t%10+'0'; } string ss=""; if(jin>0){ ss=ss+"1"; } for(int i=0;i<len1;i++){ ss=ss+s3[i]; } return ss; } int main(int argc, char** argv) { //freopen("abc.txt","r",stdin); string s1="0",s2; int n; cin>>n; for(int i=1;i<=n;i++){ s2=jiecheng(i); s1=jia(s1,s2);cout<<s1<<endl; } return 0; }
时间: 2023-07-14 20:09:52 浏览: 96
万能头文件#include“bitsstdc++.h”.docx
这段代码是一个计算阶乘和的程序。它使用了两个函数,`jiecheng()`用于计算阶乘,`jia()`用于将多个阶乘的结果相加。在主函数中,输入一个整数n,然后计算1到n的阶乘并将结果累加。最后输出累加的结果。
代码中使用了一个字符数组a来存储计算过程中的中间结果,通过对字符数组进行操作,实现了大整数的计算。函数`jiecheng()`根据阶乘的定义,使用循环计算每个数字的阶乘并将结果存储在字符数组a中。函数`jia()`用于将两个大整数相加,其中还包含了处理进位的逻辑。
在主函数中,先定义一个初始值为0的字符串s1,用于存储阶乘和的结果。然后通过循环从1到n计算每个数的阶乘,并将结果累加到s1中。最后输出s1的值。
需要注意的是,代码中有一行注释掉的代码`//cout<<a[i];`表示输出每次计算的阶乘结果,如果需要查看每次计算的过程可以取消注释。
请问还有其他问题吗?
阅读全文