C++ 50分3.4测试点WA求助
查看原帖
C++ 50分3.4测试点WA求助
1478998
polymath_楼主2024/11/26 23:46
#include <bits/stdc++.h>

using namespace std;

int jc(int n)
{
	int result=1;
	for(int i=1;i<=n;i++)
	{
		result*=i;	
	}
	return result;	
} 

int main()
{
	int n,len1=0,len2=0;
	unsigned long long a[100]={0};
	unsigned long long b[100]={0}; 
	unsigned long long c[100]={0};
	
	cin>>n;
	//录入每一项阶乘 
	for(int i=0;i<n;i++)
	{
		a[i]=jc(i+1);
	}
	
	for(int i=0;i<n;i++)
	{
		len2=0;
		for(int j=0;a[i]!=0;j++)
		{
			//将第一项拆分 
			if(i==0)
			{
				b[j]=a[i]%10;
				a[i]=a[i]/10;
				len1++;	
			}
			//拆分后面 
			else
			{
				c[j]=a[i]%10;
				a[i]=a[i]/10;
				len2++;	
			}
		}
		
		if(len2>len1)
			len1=len2;
			
		for(int j=0;j<len1;j++)
		{
			b[j]=b[j]+c[j];
			if(b[j]>=10)
			{
				b[j+1]++;
				b[j]=b[j]%10; 
			}
			if(b[len1]!=0)
				len1++;
		}	
	}

	for(int i=len1-1;i>=0;i--)
	{
		cout<<b[i];
	} 
	return 0;
}
2024/11/26 23:46
加载中...