DSTJZ


私信TA

用户名:dotcpp0721777

访问量:9614

签 名:

时间可以解决许多问题

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

  自我简介:

TA的其他文章


参考代码:

#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分

6 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »