求助一道很水的题
  • 板块灌水区
  • 楼主fish_gugu
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/4/19 20:54
  • 上次更新2023/10/23 18:01:44
查看原帖
求助一道很水的题
759436
fish_gugu楼主2023/4/19 20:54

P1009 阶乘之和

#include <iostream>
#include <string>
using namespace std;

int mul[1010];
int sum[1000010];

void addBIG(int x[], int y[], int z[])
{
    z[0] = max(x[0], y[0]);
    for (int i = 1; i <= z[0]; i++)
         z[i] = x[i] + y[i];
    for (int i = 1; i <= z[0]; i++)
    {
          z[i + 1] += z[i] / 10;
          z[i] %= 10;
          if (z[z[0] + 1] > 0) z[0]++;
    }
}

void i2BIG(int n, int a[]) 
{
	int la = 0;
	while (n > 0)
	{
	      la++;
	      a[la] = n % 10;
	      n /= 10;
	}
	if (la == 0) la++;
	a[0] = la;  
}


void printBIG(int a[]) 
{
	int la = a[0];  
	for (int i = la; i >= 1; i--) 
	{
		cout << a[i];
	}
	cout << endl; 
}


void mulBIG(int x[], int y, int z[])
{
    z[0] = x[0];
    for (int i = 1; i <= z[0]; i++) 
        z[i] = x[i] * y;
    for (int i = 1; i <= z[0]; i++) 
    {
        z[i + 1] += z[i] / 10;
        z[i] %= 10;
        if (z[z[0] + 1] > 0) z[0]++;
    }
}

int main()
{
    int n;
    cin >> n;
    i2BIG(1,mul);
    for(int i = 1;i <= n;i++)
    {
        for(int j = 1;j <= i;j++)
        {
        	mulBIG(mul,j,mul);
        }
        addBIG(mul,sum,sum);
        i2BIG(1,mul);
    }
    printBIG(sum);
    return 0;
}

0分,爸爸妈妈也看不出哪里有问题(思考了2天了 )

2023/4/19 20:54
加载中...