没想到USACO有这道题

刘嘉柚  •  4个月前


题解:

按普通的阶乘去循环,每乘一次就去掉后面的0 去0的话只需一个while:

while(jc%10==0)
	jc/=10;

为了防止最终的数据量太大,结果需模10000 上AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,jc=1;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		jc*=i;  //累乘
		while(jc%10==0) //去掉末尾的0
			jc/=10;
		jc%=10000; //模10000防止数据爆炸
	}
	cout<<jc%10;
    return 0; //华丽结束
}

Comments: