50分help!
查看原帖
50分help!
487497
昊天无极楼主2022/1/1 15:34

~~我jio得我的思路没问题啊~~~

错误代码:↓

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
int n;
int len;
int s[1001];
ULL jc(int x) //计算阶乘 
{
	int sum=1;
	for(int i=x;i;i--)sum*=i;
	return sum;
}
void add(ULL a) //高精度求和 
{
	int k=0;
	while(a!=0)
	{
		int x=a%10;
		a/=10,k++;
		s[k]+=x;
		if(s[k]>=10)s[k+1]+=s[k]/10,s[k]%=10;
		len=max(len,k);
	}
}
void jw() //进位 
{
	for(int i=1;i<=len+1;i++)
		if(s[i]>=10)s[i+1]+=s[i]/10,s[i]%=10;
}
void output() //测试输出 
{
	len++;
	while(s[len]==0)len--;
	for(int i=len;i;i--)printf("%d",s[i]);
	puts("");
	puts("");
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		ULL x=jc(i);
		add(x);
		jw(); 
//		output();
	}
	len++;
	while(s[len]==0)len--; //去除前导零 
	for(int i=len;i;i--)printf("%d",s[i]);
	return 0;
}

求各位大佬帮忙!!!QwQ

2022/1/1 15:34
加载中...