DSTJZ


私信TA

用户名:dotcpp0721777

访问量:4395

签 名:

天下难事,必作于易;天下大事,必作于细。

等  级
排  名 50
经  验 10969
参赛次数 13
文章发表 312
年  龄 18
在职情况 学生
学  校 狗熊岭23届毕业生
专  业

  自我简介:


参考代码:

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

void add(int[], int[], int[]);
void multiply(int, int[], int[]);
void print(int[]);
void clear(int[]);
#define N 1000
int sum[N];
int fn[N];
int t[N];

int main()
{	int n;
	cin >> n;
	fn[0] = 1;
	for(int i = 1; i <= n; i++)
	{	add(fn, sum, t);
		multiply(i + 1, fn, t);
	}
	print(sum);
	return 0;
}
void add(int a[], int b[], int c[])
{	clear(c);
	for(int i = 0; i < N; i++)
	{	c[i] += a[i] + b[i];
		if(c[i] >= 10)
		{	c[i + 1] += c[i] / 10;
			c[i] %= 10;
		}
	}
	memcpy(b, c, sizeof(int) * N);
}
void multiply(int a, int b[], int c[])
{	clear(c);
	for(int i = 0; i < N; i++)
	{	c[i] += a * b[i];
		if(c[i] >= 10)
		{	c[i + 1] += c[i] / 10;
			c[i] %= 10;
		}
	}
	memcpy(b, c, sizeof(int) * N);
}
void print(int arr[])
{	int i = N - 1;
	while(i > 0 && arr[i] == 0)
		i--;
	for( ; i >= 0; i--)
		putchar(arr[i] + '0');
	putchar('\n');
}
void clear(int arr[])
{	for(int i = 0; i < N; i++)
		arr[i] = 0;
}


 

0.0分

5 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区