求助:为什么这个过不了……我下数据自己测是对的
查看原帖
求助:为什么这个过不了……我下数据自己测是对的
16751
zxy123楼主2020/8/28 22:06
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
//#include<lazy.h>
using namespace std;
int num1[10000],num2[10000],m1,m2,n;
void mul(int a){
	for(int i=1;i<=m1;i++){
		num1[i]*=a;
	}
	for(int i=1;i<=m1-1;i++){
			num1[i+1]+=num1[i]/10;
			num1[i]%=10;
	} 
	while(num1[m1]/10){
		num1[++m1]=num1[m1-1]/10;
		num1[m1-1]%=10;
	}
}
void sum(){
	for(int i=1;i<=max(m1,m2);i++){
		num2[i]+=num1[i];
		num2[i+1]+=num2[i]/10;
		num2[i]=num2[i]%10;
	}
	m2=max(m1,m2);
	while(num2[m2]/10){
		num2[++m2]=num2[m2-1]/10;
		num2[m2-1]%=10;
	}
}
int main(){
	memset(num1,0,sizeof(num1));
	memset(num2,0,sizeof(num2));
	m1=m2=1;num1[1]=1;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		mul(i);sum();
	}
	for(int i=m2;i>=1;i--){
		printf("%d",num2[i]);
	}
	return 0;
}
2020/8/28 22:06
加载中...