写了高精度50分
查看原帖
写了高精度50分
431095
Druid楼主2024/6/6 20:57

高精度五十分求调

#include<bits/stdc++.h>
using namespace std;
int n;
short a[2048],b[2048],al=1,bl=1;
void solve()
{
	a[1]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=al;j++)
		{
			a[j]=a[j]*i;
			
		}
		for(int j=al;j>=1;j--)
		{	
			if(a[j]>10)
			{
				a[j+1]+=a[j]/10;
				if(j+1>al)
					al++;
				a[j]=a[j]%10;
			}
		}
		for(int j=1;j<=al;j++)
		{
			b[j]=b[j]+a[j];
			if(b[j]>10)
			{
				b[j+1]+=b[j]/10;
				if(j+1>bl)
					bl++;
			}
			b[j]=b[j]%10;
		}
	}
	for(int i=bl;i>=1;i--)
	{
		cout<<b[i];
	}
}
int main()
{
	cin>>n;
	if(n==0 or n==1)
	{
		cout<<1;
		return 0;
	}
	solve();
    return 0;
}
2024/6/6 20:57
加载中...