#include<stdio.h>
#include<iostream>
using namespace std;
int QiuJC(int t)
{
int i;
int sum=1;
for(i=1;i<=t;i++)
{
sum*=i;
while(sum%10==0)
{
sum/=10;
}//消去尾部所有的0
sum%=1000;
//printf("%d * %d\n",sum,i+1) ;
}
return sum%10;
}
int main()
{
int n;
cin>>n;
QiuJC(n);
printf("%d\n",QiuJC(n));
return 0;
}
需要注意的地方:
1、while(sum%10==0) {sum/=10}; 用于消去末尾的所有0;
2、为了避免数据规模过大,可以采用sum%1000来保留与题目结果直接相关的有效数据部分;(sum%1000是能从最大程度上保留所有与计算结果直接相关的数据的一种操作,而sum%100看似作用相同,但是无前者作用效果好,换句话说,sum%100会导致程序功能缺失,计算结果不全)。