题解 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.

posted @ 2020-08-11 16:49  Callous_Murder  阅读(67)  评论(1编辑  收藏  举报