最新消息:

VB_Python代码对照算法百题(020)

Python 少儿编程 1586浏览 0评论

 VB代码:(2018年9月金华十校)14. 趣味数学题:n 的阶乘 n!=1×2×3×4×5×…×n,当 n≥5 时,其结果末尾必然包含多个0,求 n!(5≤n≤32726)末尾包含 0 的个数。
算法思路:n 较大时,n!的值将超出 long 类型范围,求出 n!的结果再数 0 的个数不现实。那么末尾的 0 到底是从哪里来的?每一个因子 5 与任一偶数相乘就会产生一个 0。所以末尾有多少 0 是由因子 5 的个数决定的,求出因子 5 的个数即是末尾 0 的个数。程序运行界面和代码如下所示。

VB_Python代码对照算法百题(020)

(1)为使窗体加载时,窗体标题栏自动显示为“第 14 题程序”,则可以在 过程(填写过程名)中添加代码: Form1.Caption=”第 14 题程序”。

(2)实现上述算法的 VB 程序如下,请补充程序中划线处的代码。

Private Sub Command1Click()
Dim n As Integer
n = Val(Text1.Text) i = 1
Do While
     
s = s + n 5 ^ i i = i + 1
Loop
List1.AddItem Str(n) + “!末尾包含 0 的个数:” +
     
End Sub
(2) 根据上述算法,2018!末尾包含 0 的个数是 个。

参考答案:

(1) formload
(2) ①5^i<=n ②str(s) ③502

解析:

(1)此题考查事件处理过程名的命名格式:对象名_事件名。
(2)思路:1至n中每个数中包含5的因子数累加,等价于1至n中5的倍数中每个数5的因子数累加,提炼后等价于1至n中能被5整除的个数+能被5^2整除的个数+…+能被5^i整除的个数。①处满足循环的条件是:5的因子个数乘积小于等于n。

Python代码如下:

n=int(input(‘输入n:n’))
s=0
i=1
while 5**i < n:

s=s+n//5**ii=i+1
print(str(n)+’!末尾0的个数:’,str(s))

VB_Python代码对照算法百题(020)

Python代码运行结果如下:

VB_Python代码对照算法百题(020)

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