Python 中透過串聯 n 次來計算數字模數的程式


假設我們有一個數字 A。我們必須透過連續 n 次串聯 A 生成一個大數字 X,並找到 X 模 m 的值。

因此,如果輸入類似於 A = 15 n = 3 m = 8,那麼輸出將為 3,因為數字 x 將為 151515,且 151515 mod 8 = 3。

要解決這個問題,我們將遵循以下步驟 −

  • 如果 A 與 0 相同,則
    • 返回 0
  • an:= A
  • c:= A 中的數字位數
  • c:= 10^c
  • d:= c-1
  • newmod := d*m
  • val := (c ^ n mod newmod) -1
  • val :=(val + newmod) mod newmod
  • an :=(an * val) mod newmod
  • 返回 (an / d) 的向下取整

示例

讓我們看看以下實現以獲得更好的理解 −

def solve(A, n, m):
   if A == 0:
      return 0
   an=A
   c=len(str(A))
   c=10**c
   d=c-1
   newmod = d*m
   val = pow(c,n,newmod)-1
   val = (val+newmod) % newmod
   an = (an*val) % newmod
   return an // d

A = 15
n = 3
m = 8
print(solve(A, n, m))

輸入

15, 3, 8

輸出

3

更新於: 23-Oct-2021

145 次瀏覽

提升你的 職業生涯

完成課程獲得認證

立即開始
廣告
© . All rights reserved.