求助啊。。。。大佬们,用了高精度,得了0分..........
查看原帖
求助啊。。。。大佬们,用了高精度,得了0分..........
312780
456laji楼主2020/4/27 22:33

代码丑陋,见谅见谅.

#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
int res[N],len=0;

void get_res(int k)
{
	int a[N]={0},c[N]={0};
	
	int lena=0,x=k;
	while(x)
	{
		a[lena++]=x%10;
		x/=10;
	}
	
	for(int j=0;j<=len;j++)
	{
		int up=0;
		for(int i=0;i<lena;i++)
		{
			c[i+j]+=a[i]*res[j]+up;
			up=c[i+j]/10;
			c[i+j]%=10;
		}	
		c[lena+j]=up;
	}
	int n=(max(len,lena)*2)-1;
	while(c[n]==0&&(n)>0)
		n--;
	len=n;
	memset(res,0,sizeof res);
	for(int i=0;i<n;i++)
		res[i]=c[i];

}

int main()
{
	res[1]=1;
	int n;
	scanf("%d",&n);
	for(int i=2;i<=n;i++)
	{
		get_res(i);
	}
	for(int i=len;i>=0;i--)
		printf("%d",res[i]);printf("\n");
	return 0;
}
2020/4/27 22:33
加载中...