2 条题解

  • 1
    @ 2022-12-12 11:31:37
    #include <bits/stdc++.h>
    using namespace std;
    int a[10005],s[10005];
    //每次都计算 a数组*k 
    void ans(int k)
    {
    	int i;
    	//每一位都乘以k 
    	for(i=0;i<10000;i++){
    		a[i] = a[i]*k;
    	}
    	for(i=0;i<10000;i++){
    		a[i+1] = a[i+1] + a[i]/10;
    		a[i] = a[i]%10;
    	}
    }
    void add()
    {
    	int i;
    	for(i=0;i<10000;i++){
    		s[i] = s[i]+a[i];
    		s[i+1] = s[i+1] + s[i]/10;
    		s[i] = s[i]%10; 
    	}
    }
    int main()
    {
    	int n,i,j;
    	scanf("%d",&n);
    
    	for(i=1;i<=n;i++){
    		memset(a,0,sizeof(a)); 
    		a[0] = 1; 
    		for(j=1;j<=i;j++){
    			ans(j);
    		}
    		add();
    	}
    
    	int p=1000;
    	for(i=p;i>=0;i--){
    		if(s[i]!=0){
    			p = i;
    			break;
    		}
    	}
    	for(i=p;i>=0;i--){
    		printf("%d",s[i]);
    	}
    	return 0;
    }//代码已AC
    
    • 0
      @ 2022-12-23 14:03:20
      #include <bits/stdc++.h>
      using namespace std;
      int n , ans[1005] , t[1005] = {0 , 1};//t数组保留当前数的阶乘
      int main()
      {
          cin >> n;
          for (int i = 1 ; i <= n ; i++)
          {
              //乘当前数字
              for (int j = 1 ; j <= 1000 ; j++) t[j] *= i;
              for (int j = 1 ; j <= 1000 ; j++)
              {
                  if (t[j] > 9)
                  {
                      t[j + 1] += t[j] / 10;
                      t[j] %= 10;
                  }
              }
              //将结果加到ans数组里
              for (int j = 1 ; j <= 1000 ; j++) ans[j] += t[j];
          }
          //处理进位
          for (int i = 1 ; i <= 1000 ; i++)
          {
              if (ans[i] > 9)
              {
                  ans[i + 1] += ans[i] / 10;
                  ans[i] %= 10;
              }
          }
          //输出
          int top = 1000;
          while (ans[top] == 0) top--;
          for (int i = top ; i >= 1 ; i--)
          {
              cout << ans[i];
          }
          return 0;
      }//已AC
      
      • 1

      [普及~提高]求1!+2!+3!+4!+...+n!

      信息

      ID
      293
      时间
      1000ms
      内存
      256MiB
      难度
      6
      标签
      递交数
      150
      已通过
      51
      上传者