1 条题解

  • 2
    @ 2023-5-18 20:53:57
    #include <stdio.h>
    #include <iostream>
    #include <vector>
    #include <iomanip>
    #include <string.h>
    #include <algorithm>
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e6+10;
    int ans[N], len=1;
    void a(int x){
    	
    	for(int i=0; i<len; i++){
    		ans[i] *= x;
    	}
    	for(int i=0; i<len; i++){
    		ans[i+1]+=ans[i]/10000;
    		ans[i]%=10000;
    		
    	}
    	while(ans[len]!=0){
    		ans[len+1]+=ans[len]/10000;
    		ans[len]%=10000;
    		len ++;
    		
    	}
    }
    int main(){
    	int n;
    	cin >> n;
    	ans[0]=1;
        for (int i=2; i<=n; i++){
        	a(i);
        }
        len --;
        cout <<n<<"!="<< ans[len];
        for(int i=len-1; i>=0; i--){
        	printf("%04d",ans[i]); 
        }
        return 0;
    }//这道题主要的难点在于他很容易超时,所以我们要采用结构体等方式,别忘了点个赞再走哦,另外感谢泰裤辣提供的思路
    
    • 1

    信息

    ID
    1718
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    23
    已通过
    6
    上传者