使用 Python 中的楼梯查找我们可以到达下一层的多种方式的程序

假设有一个有 N 个台阶的楼梯。可以一步一步走,也可以每一步最多跳N步。我们必须找到可以到达顶层的多种方式。N 值可能很大,我们只对路数的前 K 位和后 K 位感兴趣。

所以,如果输入像 N = 10 k = 2,那么输出将是 63,因为有 10 个步骤,如果有 S 种方法可以到达顶部,那么考虑 S 的形式为 wxyz .所以,wx + yz 的总和是 63。

示例

让我们看看以下实现以获得更好的理解 -

from math import log10,ceil

def solve(N,k):
   N -= 1
   c = 2*ceil(k + log10(N))
   e = N
   b = 2
   s = 1
   while e > 0:
      if e % 2 == 1:
         s = int(str(s*b)[:c])
      e //=2
      b = int(str(b*b)[:c])
   s = str(s)[:k]
   r = int(s) + pow(2, N, 10**k)
   return r

N = 10
k = 2
print(solve(N,k))

输入

10, 2
输出结果
63

猜你喜欢