5 条题解

  • 1
    @ 2023-7-31 15:14:48

    朴实无华

    #include<bits/stdc++.h>
    #include<string>
    using namespace std;
    
    int a[10000];
    int b[10000];
    int c[10000];
    
    int main()
    {
    
        int o;
        cin >>o;
        int la,lb,lc;
        if(o==1){cout<<"1";}
        else{
            for(int i=2; i<=o; i++){
                if(i==2){
                    la=1;
                    a[1]=1;
                }
                else{
                    la=lc;
                }
                lb=0;
                int k=i;
                for(int j=1; j>0; j++){
                    lb++;
                    b[j]=k%10;
                    k=k/10;
                    if(k<10 && k!=0){
                        b[j+1]=k;
                        lb++;
                        break;
                    }
                    if(k==0){break;}
                }
                lc=lb+la;
                for(int j=1; j<=la; j++){
                    for(int t=1; t<=lb; t++){
                        c[t+j-1]=a[j]*b[t]+c[t+j-1];
                        c[t+j]=c[t+j]+c[t+j-1]/10;
                        c[t+j-1]=c[t+j-1]%10;
                    }
                }
                if(c[lc]==0){lc--;}
                for(int j=1; j<=lc; j++){
                    a[j]=c[j];
                    c[j]=0;
                }
            }
            for(int i=lc; i>=1; i--){
                cout<<a[i];
            }
        }
    
    	return 0;
    }
    
    • 0
      @ 2023-9-27 10:01:52

      我是短码大师,我非常喜欢压行

      void solve(){cin>>n;a[0]=1;F(i,2,n){p=0;F(j,0,lxb){a[j]=a[j]*i+p;p=a[j]/10;a[j]%=10;}}int f=1;for(int i=lxb;i>=0;i--){if(f and!a[i])continue;f=0;cout<<a[i];}}
      

      不皮了,高精乘其实要实现没必要那么麻烦,模拟正常乘法就好了。

      #define F(a,b,c) for(int a=b ; a<=c ;a++)
      void solve()
      {
          cin>>n;
          a[0]=1;
          F(i,2,n){
              p = 0;
              F(j,0,lxb){
                  a[j] = a[j]\*i+p;
                  p = a[j]/10;
                  a[j] %= 10;
              }
          }
          int f=1;
          for(int i=lxb ; i>=0 ; i--){
              if (f and !a[i]) continue;
              f = 0;
              cout<<a[i];
          }
      }
      
      • 0
        @ 2023-7-19 18:22:04

        #include #include #include #include using namespace std; const int N=1e+5; long long ans[N]={0}; int main() { int n; cin>>n; ans[1]=1; long long cnt=1; for(int i=1;i<=n;i++) { for(int j=1; j<=cnt; j++) { ans[j]*=i;

        }
        

        for(int k=1; k<=cnt;k++) { ans[k+1]+=ans[k]/10; ans[k]%=10; if(ans[cnt+1]>0){cnt++;} }

        }
        
        for(long long i=cnt;i>=1;i--)
        {
            cout<<ans[i];
        }
        return 0;
        

        }

        • 0
          @ 2023-7-18 20:46:14

          #include

          int a[50000]={0}; using namespace std;

          int main() { int n,wei=0; cin >>n; a[0]=1; for(int i=1;i<=n;i++){ for(int j=0;j<=wei;j++){ a[j]*=i; } for(int k=0;k<=wei;k++){ a[k+1]+=a[k]/10; a[k]%=10; if(wei==k&&a[k+1]!=0){ wei++; } } } for(int i=wei;i>=0;i--){ cout <<a[i]; } }

          • 0
            @ 2022-8-9 22:34:51
            #include<cstring>
            #include<iostream>
            #define maxn 3000
            int f[maxn];
            using namespace std;
            
            int main()
            {
                int i,j,n;
                cin>>n;
                memset(f,0,sizeof(f));//将其中内存置于0
                f[0]=1;//初始置于1
                for(i=2;i<=n;i++)
                {
                    int jinwei=0;//定义进位初始为0
                    for(j=0;j<maxn;j++)
                    {
                        int s=f[j]*i+jinwei;//乘法结果为乘完加之前的进位
                        f[j]=s%10;
                        jinwei=s/10;//获得进位数
                    }
                }
                /*下面这部分为了获取有多少位是有用的*/
                for(j=maxn-1;j>=0;j--)
                    if(f[j]!=0)
                        break;
                for(i=j;i>=0;i--)
                {
                    cout<<f[i];
                }
            }
            
            • 1

            信息

            ID
            281
            时间
            1000ms
            内存
            128MiB
            难度
            5
            标签
            递交数
            74
            已通过
            28
            上传者