輸入正整數nui
輸出個數spa
Sample inputcode
2015
Sample Outputhtm
502
尾部零,就是看乘積中能組成10的個數有多少個,能夠是1*十、2*5。咱們在前N個數中,可以拆分獲得2的個數比5多,而後咱們只要看有多少個數能拆分獲得5就好了,這樣剛好就包含了1*10的狀況。blog
這樣這個問題就變成了前N個數中有多少個數能拆分獲得5。get
也就是算前N個數中,是5的倍數的個數+是5*5的倍數的個數+是5*5*5的倍數的個數.....(以此類推)(5^x小於等於N)input
爲了描述的更清楚,咱們能夠在草稿紙上畫一個1~N的座標軸,每次圈出5的倍數的點(好比說五、十、15.......),再圈出5*5的倍數的點.......(以此類推)。io
這樣,咱們發現5只劃記了一次,25就劃記了兩次……恰好把每一個數出現的次數表示出來了。
#include <stdio.h> int main() { int n, s = 0, t = 1; scanf("%d", &n); while (t <= n) { t = t * 5; s = s + n / t; } printf("%d\n", s); return 0; }
此題爲分支,根部網址: http://www.javashuo.com/article/p-maerkngw-ch.html