最新消息:

2019北京青少年信息学科普日活动朝阳区选拔赛小学组第4题—nonzero

C++ 少儿编程 1278浏览 0评论

1

问题描述

    小明最近对阶乘很感兴趣,但是阶乘增长的太快了。如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下。小明想知道阶乘最后面的非零位是多少。

    例如:5!=1*2*3-4*5=120,所以5!最后面的非零位是2。

    7!=1*2-3*4*5*6*7=5040,所以7!最后面的非零位是4。

输入

一行,一个整数N(N<=1000)。

输出

一行,输出N!最后面的非零位。

样例输入

7

样例输出

4

2

问题分析

      使用暴力枚举自然得不了满分,既然想求的是最后面的非0位,那么末尾的0不会起到作用,我们可以在阶乘的过程中每次都把末尾产生的0去掉。其实再想我们只求最后一位非0位,这一位的产生跟前面的高位没有关系,所以我们可以每次对乘出来的值余10000,最后对结果余10,得到最后一位非0位。

 

3

参考代码如下

2019北京青少年信息学科普日活动朝阳区选拔赛小学组第4题—nonzero

转自公众号:
信息学少儿编程

您必须 登录 才能发表评论!