Posts pythonTip 68 阶乘
Post
Cancel

pythonTip 68 阶乘

题目描述: N的阶乘定义为:N!=N×(N-1)×……×2×1 请编写一个程序,输出N的阶乘的十进制表示中从最末一个非0位开始自低位向高位数的第K位。 现在给你N和K(0<=N<=10000,1<=K<=5),请你输出要求的数字(保证存在)。 例如:N=5,K=2,则输出1 note:(5!=120); N=8,K=3,结果为0 note:(8!=40320)

示例: 输入: N = 777 K = 5 输出:1

分析:

这个给可能是一个数学公式的问题,但是我不想去推导了,就直接用最原始的方式进行一个模拟了。

先是算出阶乘,然后去掉末尾的 0, 最后将数字转化成字符串,直接取索引。如果想控制一下位数也是可以的,因为这里的 k 的 取值范围是 [1, 5] 所以我们只要保存6位就可以了。 多一位关爱,是我的原则。

代码:

1
2
3
4
5
6
7
8
ans = 1
for i in range(1, N+1):
    ans *= i

while not ans % 10:
    ans //= 10

print(str(ans)[-K])
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 67 101位自复制数

pythonTip 69 回文数 I

Trending Tags