用 Python 找到數字之和是若干不重複數字的 n 次冪的方式數的程式


假設我們有一個數字 x 和另一個數字 n。我們必須找到數字之和是若干不重複數字的 n 次冪的方式數。

因此,如果輸入類似 x = 100 n = 2,輸出將為 3,因為可能的解是 6^2 + 8^2、10^2 以及 1^2 + 3^2 + 4^2 + 5^2 + 7^2。

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

  • ans := 0
  • 定義一個名為 solve() 的方法,它將接受四個引數 x、n、cn 和 cs,初始
  • cs 的值為 0,cn 的值為 1
  • p := cn^n
  • while p + cs < x 執行以下操作:
    • ans := ans + solve(x, n, cn + 1, p + cs)
    • cn := cn + 1
    • p := cn^n
  • 如果 p + cs 與 x 相同,則
    • ans := ans + 1
  • 返回 ans

示例

讓我們看看以下實現來更好地理解 −

from math import pow

def solve(x, n, cn = 1, cs = 0):
   ans = 0
   p = pow(cn, n)
   while p + cs < x:
      ans += solve(x, n, cn + 1, p + cs)
      cn = cn + 1
      p = pow(cn, n)

   if p + cs == x:
      ans = ans + 1
   return ans

x = 100
n = 2
print(solve(x, n))

輸入

100, 2

輸出

3

更新於:12-Oct-2021

已檢視 218 次

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.