P1009 阶乘之和 大数阶乘和

https://www.luogu.com.cn/problem/P1009

#include<iostream>  //b数组是阶乘 a数组是阶乘的和
using namespace std;
const int N=1010;
int n;
int a[N],b[N];
int main()
{
    
    
	cin>>n;
	a[0]=b[0]=1;
	for(int i=2;i<=n;i++)
	{
    
    
		for(int j=0;j<=100;j++)
			b[j]*=i;
		for(int j=0;j<=100;j++)
		{
    
    
			b[j+1]=b[j+1]+b[j]/10;
			b[j]%=10;
		}
		
		for(int j=0;j<=100;j++)
		{
    
    
			a[j]+=b[j];
			a[j+1]=a[j+1]+a[j]/10;
			a[j]%=10; 
		}
	}
	int i=100;
	while(a[i]==0 && i>=0)
		i--;
	while(i>=0)
	{
    
    
		printf("%d",a[i]);
		i--;
	}
	return 0;
}

Guess you like

Origin blog.csdn.net/weixin_52341477/article/details/121523590
Recommended