USACO3.2 Factorials(fact4)

        水题吧?有一个陷阱,不能仅仅保留结果的最后一位,例如14!的最后一位是2,计算2*15,最后一位非零数字是3,其实这是错的,这里由于n<=4220<10000,因此应该保留4位。ios

/*
ID:jzzlee1
PROB:fact4
LANG:C++
*/
//#include<iostream>
#include<fstream>
using namespace std;
ifstream cin("fact4.in");
ofstream cout("fact4.out");
int cal(int x)
{
	while(x%10==0)
		x/=10;
	return x>10000?x%10000:x;
}
int main()
{
	int n;
	cin>>n;
	int i,ans=1;
	for(i=2;i<=n;i++)
	{
		ans*=i;
		ans=cal(ans);
	}
	ans%=10;
	cout<<ans<<endl;
	return 0;
}
相关文章
相关标签/搜索