[2016-05-10][51nod][1003 阶乘后面0的数量]

  • 时间:2016-05-10 09:20:52 星期二

  • 题目编号:[2016-05-10][51nod][1003 阶乘后面0的数量]

  • 题目大意:n的阶乘后面有多少个0?

  • 分析:

    • 5 * 2贡献一个0,所以,只需要判断你n!有多少个因数5和因数2,又因为因数2的数目比5的多,所以只需要判断因数5的个数,
    • 判断因素5的个数
      • 1 ~ n中 ,每隔5个数字,就有一个数字能被5整除
      • 整除得到的数字中,每个5个数,除以5还能得到5的倍数
      • 依次类推,需要不断除以5
      • 比如 100!
      • 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
      • 25 50 75 100 这4个数字,还能贡献出一个5
      • 结束
  • 遇到的问题:

  1. #include<stdio.h>
  2. using namespace std;
  3. int main(){
  4. int n,ans = 0;
  5. scanf("%d",&n);
  6. while(n){
  7. ans += n / 5;
  8. n /= 5;
  9. }
  10. printf("%d\n",ans);
  11. return 0;
  12. }


来自为知笔记(Wiz)


posted on 2016-05-10 09:33  红洋  阅读(194)  评论(0编辑  收藏  举报

导航