题意:输出n的阶层最后一个非0数。
题解:可以把5和2的个数算出来,每次把5和2都除掉,最后乘上比5多出来的2。我的解法是,每次把尾巴的0去掉,并且保留3位,算到最后取尾数就可以了。、
/* TASK:fact4 LANG:C++ */ #include<cstdio> #include<algorithm> #include<cstring> #define INF 0x3f3f3f3f using namespace std; int main(){ freopen("fact4.in","r",stdin); freopen("fact4.out","w",stdout); int n,ans=1; scanf("%d",&n); for(int i=1;i<=n;i++){ ans*=i; while(ans%10==0)ans/=10; ans%=1000; } printf("%d ",ans%10); return 0; }