在 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
- 如果 num[j] 與 temp[index] 相同,則
- 返回“不可能”
- 從方法中執行以下操作:
- 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
廣告