6 条题解

  • 2
    @ 2023-12-8 19:17:39

    100%AC不AC我倒立洗头

    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<iomanip>
    #include<queue>
    #include<algorithm>
    #include<vector>
    #include<stack>
    using namespace std;
    #define LL long long
    const int N=1e5+10;
    using namespace std;
    int n , ans[N] , len , x;
    int main()
    {
    	
    	cin>>n;
    	ans[++len] = 1;
    	for(int i = 2; i <= n; i++)
    	{
    		for(int j = 1; j <= len; j++)
    		{
    			ans[j] = ans[j] * i + x;
    			x = ans[j] / 10;
    			ans[j] %= 10;
    		}
    		
    		while( x )
    		{
    			ans[++len] = x % 10;
    			x /= 10;
    		}
    	}
    	for(int i = len; i >= 1; i --)
    		cout << ans[i];
    	return 0;
    }
    
    • 0
      @ 2026-10-18 20:14:34
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6+10;
      int a[N],len=1;
      void mul(int p){
      	int k=0;
      	for(int i=0;i<len;i++){
      		a[i]=a[i]*p+k;
      		k=a[i]/10000;
      		a[i]%=10000;
      	} 
      	while(k!=0){
      		a[len++]=k%10000;
      		k=k/10000;
      	}
      }
      int main(){
      	int n;
      	cin>>n;
      	a[0]=1;
      	for(int i=2;i<=n;i++){
      		mul(i);
      	}
      	cout<<a[len-1];
      	len-=2;
      	for(int i=len;i>=0;i--){
      		printf("%04d",a[i]);
      	}
      	return 0;
      }
      
      • 0
        @ 2025-7-26 19:07:56
        #include <iostream>
        #include <vector>
        using namespace std;
        
        // 计算阶乘的函数,返回存储阶乘结果的数组,低位在前
        vector<int> factorial(int n) {
            vector<int> result(1, 1);  // 初始化为1,低位在前,方便计算
            for (int i = 2; i <= n; ++i) {
                int carry = 0;
                for (size_t j = 0; j < result.size(); ++j) {
                    int product = result[j] * i + carry;
                    result[j] = product % 10;
                    carry = product / 10;
                }
                while (carry > 0) {
                    result.push_back(carry % 10);
                    carry /= 10;
                }
            }
            return result;
        }
        
        int main() {
            int n;
            cin >> n;
            if (n == 0 || n == 1) {
                cout << 1 << endl;
                return 0;
            }
            vector<int> res = factorial(n);
            // 从高位到低位输出结果
            for (auto it = res.rbegin(); it != res.rend(); ++it) {
                cout << *it;
            }
            cout << endl;
            return 0;
        }
        
        • 0
          @ 2023-11-5 19:34:27
          #include<iostream>
          #include<string.h>
          using namespace std;
          const int INF=0x3f3f3f3f;
          const int N=2e5+10;
          long long n,x,a[N],len; 
          int main(){
          	cin>>n;
          	a[++len]=1;
          	for(int i=1;i<=n;i++){
          		for(int j=1;j<=len;j++){
          			a[j]=a[j]*i+x;
          			x=a[j]/10;
          			a[j]%=10;
          		} 
          		while(x){
          			a[++len]=x%10;
          			x/=10;
          		}
          	}
          	for(int i=len;i>=1;i--){
          		cout<<a[i];
          	}
          }
          
          
          • 0
            @ 2023-11-5 19:33:05
            #include<iostream>
            #include<string.h>
            using namespace std;
            const int INF=0x3f3f3f3f;
            const int N=2e5+10;
            long long n,x,a[N],len; 
            int main(){
            	cin>>n;
            	a[++len]=1;
            	for(int i=1;i<=n;i++){
            		for(int j=1;j<=len;j++){
            			a[j]=a[j]*i+x;
            			x=a[j]/10;
            			a[j]%=10;
            		} 
            		while(x){
            			a[++len]=x%10;
            			x/=10;
            		}
            	}
            	for(int i=len;i>=1;i--){
            		cout<<a[i];
            	}
            }
            
            • 0
              @ 2023-11-5 18:10:18
              #include<bits/stdc++.h>
              using namespace std;
              
              const int N=1e6+10;
              long long a,b,c,d,e,f,g;
              double x,y,z;
              int n[N];
               
              int main(){
              	cin>>a;
              	n[++b]=1;
              	for(int i=1;i<=a;i++){
              		for(int j=1;j<=b;j++){
              			n[j]=n[j]*i+c;
              			c=n[j]/10;
              			n[j]%=10;
              		}
              		while(c){
              			n[++b]=c%10;
              			c/=10;
              		}
              	}
              	for(int i=b;i>=1;i--)cout<<n[i];
              	return 0;
              } 
              
              • 1

              信息

              ID
              1198
              时间
              1000ms
              内存
              128MiB
              难度
              6
              标签
              递交数
              250
              已通过
              83
              上传者