ZOJ
2022 Factorial
在机房自己A的第一道题,呵呵~
题意:找出所给数字的阶乘的尾巴上有多少连续的0;
思路:对效率要求很高,所以根本不用怀疑是借鉴了别人的思路。最最最不可忍受之思路:计算出阶乘,然后数,吼吼~最大数字有十位呐,怎么可能这样做~最最不可忍受之思路:发现0都是由5乘来的嘛,但是例如25是有2个5,会得出2个0;最不可忍受之思路:数一数1~n这些数中的5的个数;可以忍受之思路:每5个数字有一个5,每5个5会又出现一个5,所以只要累加n/5+(n/5/5)+(n/5/5/5)+……就行了……汗,又一题我很笨的证据……
代码:
#include<stdio.h> int main(){ int i,n,sum,T; scanf("%d",&T); for(i = 1;i<=T;i++){ scanf("%d",&n); sum = 0; while(n/5>0){ sum = sum+n/5; n = n/5; } printf("%d\n",sum); } return 0; }