在 Python 中查找通过从数字中删除最少数字而形成的最大立方体

pythonserver side programmingprogramming更新于 2025/10/17 3:56:17

假设我们有一个数字 N,我们必须确定通过从数字中删除最少数字(可能是 0)可以生成的最大完美立方体。我们可以从给定的数字中删除任何数字以达到目标。我们知道,如果 N = M^3,其中 M 为某个整数,则数字 N 被称为完美立方体。

因此,如果输入是 806,则输出将是 8,因为我们可以从数字中删除 0 和 6,然后我们将得到 8,这是 2 的完美立方体。

为了解决这个问题,我们将遵循以下步骤 −

  • 定义一个函数 preProcess() 。这将需要 n
  • temp_cubes := a new list
  • 对于 i 在 1 到 n^(1/3) 的上限范围内的情况,执行
    • cube = i^3
    • cubeString := cube as string
    • 在 temp_cubes 末尾插入 cubeString
    • return temp_cubes
  • 定义一个函数 resolve() 。这将需要 num,temp_cubes
  • 反转 temp_cubes
  • totalCubes := temp_cubes 的大小
  • 对于范围在 0 到 totalCubes 内的 i,执行
    • temp := temp_cubes[i]
    • digitsInCube := temp 的大小
    • index := 0
    • digitsInNumber := num 的大小
    • 对于范围在 0 到 digitsInNumber 内的 j,执行
      • 如果 num[j] 与 temp[index] 相同,则
        • index := index + 1
      • 如果 digitsInCube 与 index 相同,则
        • 返回 temp
  • 返回 "Not Possible"
  • 从方法中执行以下操作减去
  • temp_cubes := preProcess(n)
  • num := n 作为字符串
  • ans := resolve(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

相关文章


有用资源