1 solutions

  • 0
    @ 2025-11-5 19:01:03

    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

    Information

    ID
    19144
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    (None)
    # Submissions
    0
    Accepted
    0
    Uploaded By