题解 SP24 FCTRL2 - Small factorials
双倍经验。
题意
给\(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("\n");
}
return 0;
}
end.