2 条题解

  • 1
    @ 2026-9-21 19:11:52
    #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
      @ 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
      难度
      7
      标签
      递交数
      29
      已通过
      9
      上传者