Giả sử chúng ta có một số N, chúng ta phải xác định khối lập phương hoàn hảo lớn nhất có thể được tạo ra bằng cách loại bỏ các chữ số nhỏ nhất (có thể là 0) khỏi số đó. Chúng tôi có thể xóa bất kỳ chữ số nào từ số đã cho để đạt được mục tiêu. Như chúng ta biết một số N được gọi là một khối lập phương hoàn hảo nếu N =M ^ 3 với một số nguyên M.
Vì vậy, nếu đầu vào giống như 806, thì đầu ra sẽ là 8, vì chúng ta có thể xóa 0 và 6 khỏi số, thì chúng ta sẽ nhận được 8, đây là khối lập phương hoàn hảo của 2.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Xác định một hàm preProcess (). Điều này sẽ mất n
- temp_cubes:=một danh sách mới
- đối với tôi trong phạm vi từ 1 đến trần là n ^ (1/3), hãy thực hiện
- cube =i ^ 3
- cubeString:=cube as string
- chèn cubeString vào cuối temp_cubes
- trả về temp_cubes
- Xác định một hàm giải quyết (). Điều này sẽ mất num, temp_cubes
- ngược temp_cubes
- totalCubes:=kích thước của temp_cubes
- đối với tôi trong phạm vi từ 0 đến totalCubes, hãy thực hiện
- temp:=temp_cubes [i]
- chữ sốInCube:=kích thước của nhiệt độ
- chỉ mục:=0
- chữ sốInNumber:=kích thước của num
- đối với j trong phạm vi 0 đến chữ sốInNumber, thực hiện
- nếu num [j] giống với temp [index], thì
- index:=index + 1
- nếu chữ sốInCube giống như chỉ mục, thì
- nhiệt độ trở lại
- nếu num [j] giống với temp [index], thì
- trả về "Không thể"
- Từ phương pháp, hãy làm như sau -
- temp_cubes:=preProcess (n)
- num:=n dưới dạng chuỗi
- ans:=giải quyết (num, temp_cubes)
- trả lại ans
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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) )
Đầu vào
806
Đầu ra
8