1 条题解

  • 0
    @ 2024-12-22 11:04:49

    C++ :

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N = 100000;
    int a[N],b[N];
    
    void addfact(int n,int a[],int b[]){
    	fill(a,a+N,0);
    	fill(b,b+N,0);
    	a[0]=a[1]=b[0]=1;
    	for (int i=1; i<=n; i++)
    	{
    		for (int j=1; j<=a[0]; j++) a[j]*=i;
    		for (int j=1; j<=a[0]; j++)
    		{
    			a[j+1]+=a[j]/10;
    			a[j]%=10;
    		}
    		while (a[a[0]+1])
    		{
    			a[0]++;
    			a[a[0]+1]=a[a[0]]/10;
    			a[a[0]]%=10;
    		}
    		b[0]=a[0]>b[0]?a[0]:b[0];
    		for (int j=1; j<=b[0]; j++)
    		{
    			b[j]+=a[j];
    			b[j+1]+=b[j]/10;
    			b[j]%=10;
    		}
    		while (b[b[0]+1])
    		{
    			b[0]++;
    			b[b[0]+1]=b[b[0]]/10;
    			b[b[0]]%=10;
    		}
    	}
    }
    
    void output(int a[]){
    	for (int i=a[0]; i>=1; i--) cout<<a[i];
    	cout<<endl;
    }
    
    int main(){
    	int n;
    	cin>>n;
    	addfact(n,a,b);
    	output(b);
    	return 0;
    }
    
    • 1

    C语言程序设计教程(第三版)课后习题6.4

    信息

    ID
    391
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者