Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาลูกบาศก์ที่ใหญ่ที่สุดที่เกิดจากการลบตัวเลขขั้นต่ำออกจากตัวเลขในPython


สมมติว่าเรามีตัวเลข N เราต้องกำหนดลูกบาศก์ที่สมบูรณ์แบบที่ใหญ่ที่สุดที่สามารถสร้างได้โดยการลบตัวเลขขั้นต่ำ (อาจเป็น 0) ออกจากตัวเลข เราสามารถลบตัวเลขใด ๆ ออกจากหมายเลขที่กำหนดเพื่อให้บรรลุเป้าหมาย อย่างที่เราทราบกันดีว่าตัวเลข N จะเรียกว่าลูกบาศก์สมบูรณ์ ถ้า N =M^3 สำหรับจำนวนเต็ม M บางส่วน

ดังนั้น หากอินพุตเป็น 806 เอาต์พุตจะเป็น 8 เนื่องจากเราสามารถลบ 0 และ 6 ออกจากตัวเลขได้ เราก็จะได้ 8 ซึ่งเป็นลูกบาศก์ที่สมบูรณ์แบบของ 2

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน preProcess() นี่จะใช้เวลา n
  • temp_cubes :=รายการใหม่
  • สำหรับ i ในช่วง 1 ถึงเพดาน n^(1/3) ทำ
    • ลูกบาศก์ =i^3
    • cubeString :=cube เป็นสตริง
    • แทรก cubeString ที่ส่วนท้ายของ temp_cubes
    • ส่งคืน temp_cubes
  • กำหนดฟังก์ชัน Solve() นี่จะใช้เวลา num,temp_cubes
  • ย้อนกลับ temp_cubes
  • totalCubes :=ขนาดของ temp_cubes
  • สำหรับฉันในช่วง 0 ถึง TotalCubes ทำ
    • อุณหภูมิ :=temp_cubes[i]
    • digitsInCube :=ขนาดอุณหภูมิ
    • ดัชนี :=0
    • digitsInNumber :=ขนาดของ num
    • สำหรับ j ในช่วง 0 ถึง digitsInNumber ทำ
      • ถ้า num[j] เหมือนกับ temp[index] แล้ว
        • ดัชนี :=ดัชนี + 1
      • ถ้า digitsInCube เหมือนกับดัชนี แล้ว
        • อุณหภูมิกลับ
  • ส่งคืน "เป็นไปไม่ได้"
  • จากวิธีการ ให้ทำดังต่อไปนี้ -
  • temp_cubes :=preProcess(n)
  • num :=n เป็นสตริง
  • ตอบ :=แก้ (num, temp_cubes)
  • คืนสินค้า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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