在 Python 中查詢透過刪除數字最少位數形成的最大立方體


假設我們有一個數字 N,我們必須確定可以透過從數字中刪除最少位數(可能是 0)生成的最大的完全立方體。我們可以刪除給定數字中的任何數字以達到目標。眾所周知,如果 N = M^3 對於某個整數 M,則數字 N 被稱為完全立方體。

因此,如果輸入類似於 806,則輸出將為 8,因為我們可以從數字中刪除 0 和 6,然後我們將得到 8,這是 2 的完全立方體。

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

  • 定義一個函式 preProcess() 。這將接收 n
  • temp_cubes := 一個新的列表
  • 對於 i 從 1 到 n^(1/3) 的上界,執行以下操作:
    • cube = i^3
    • cubeString := cube 轉換為字串
    • 將 cubeString 插入到 temp_cubes 的末尾
    • 返回 temp_cubes
  • 定義一個函式 solve() 。這將接收 num 和 temp_cubes
  • 反轉 temp_cubes
  • totalCubes := temp_cubes 的大小
  • 對於 i 從 0 到 totalCubes,執行以下操作:
    • temp := temp_cubes[i]
    • digitsInCube := temp 的大小
    • index := 0
    • digitsInNumber := num 的大小
    • 對於 j 從 0 到 digitsInNumber,執行以下操作:
      • 如果 num[j] 與 temp[index] 相同,則
        • index := index + 1
      • 如果 digitsInCube 與 index 相同,則
        • 返回 temp
  • 返回“不可能”
  • 從方法中執行以下操作:
  • temp_cubes := preProcess(n)
  • num := n 轉換為字串
  • ans := solve(num, temp_cubes)
  • 返回 ans

示例

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

import math
def preProcess(n):
   temp_cubes = list()
   for i in range(1, math.ceil(n**(1. / 3.))):
      cube = i**3
      cubeString = str(cube)
      temp_cubes.append(cubeString)
   return temp_cubes
def solve(num,temp_cubes):
   temp_cubes = temp_cubes[::-1]
   totalCubes = len(temp_cubes)
   for i in range(totalCubes):
      temp = temp_cubes[i]
      digitsInCube = len(temp)
      index = 0
      digitsInNumber = len(num)
      for j in range(digitsInNumber):
      if (num[j] == temp[index]):
         index += 1
      if (digitsInCube == index):
         return temp
   return "Not Possible"
def getLargestCube(n):
   temp_cubes = preProcess(n)
   num = str(n)
   ans = solve(num, temp_cubes)
   return ans
n = 806
print(getLargestCube(n) )

輸入

806

輸出

8

更新於: 2020-08-27

106 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告