题解 SP24 FCTRL2

双倍经验

题意

(t) 组数据,求每组数据中(n) 的阶乘。

思路

(n≤100)

(100!) 肯定爆int128,所以高精呗。

那么就是一个阶乘的板子了,应该不难的吧。

具体实现见代码。

(sf{Code})

(变量名有点奇怪……)

#include<cstdio>
#include<string.h>
using namespace std;
int n,a[91001],t,q;
int main() 
{
    scanf("%d",&q);
	while(q--)
	{
	    scanf("%d",&n);
		memset(a,0,sizeof(a));//注意初始化
		a[1]=1;
		int len=1;
		for(int i=1;i<=n;++i)//枚举1~n
		{
			t=0;//进位变量初始化
			for(int j=1;j<=len;++j) //乘上当前的数
			{
				a[j]=a[j]*i+t;
				t=a[j]/10;
				a[j]=a[j]%10;
				if(t&&j>=len)
					++len;//如果有进位,len+1
			}
		}
		for(int i=len;i>=1;--i)
			printf("%d",a[i]);//输出结果
		printf("
");
	}
	return 0;
}

end.

原文地址:https://www.cnblogs.com/CM-0728/p/13476658.html