কম্পিউটার টিউটোরিয়াল

পাইথনে ন্যূনতম অঙ্ক মুছে একটি সংখ্যা থেকে সবচেয়ে বড় পারফেক্ট কিউব বের করুন


সমস্যা বিবরণ

একটি সংখ্যা N দেওয়া আছে। এর অঙ্কগুলো থেকে ন্যূনতম সংখ্যক অঙ্ক মুছে (হতে পারে ০টিও) সবচেয়ে বড় পারফেক্ট কিউব (সমঘন) সংখ্যা বের করতে হবে। একটি সংখ্যা N পারফেক্ট কিউব হলে N = M³ কোনো পূর্ণসংখ্যা M এর জন্য।

উদাহরণস্বরূপ, ইনপুট 806 হলে আউটপুট হবে 8, কারণ 0 এবং 6 মুছে দিলে 8 পাওয়া যায় যা 2³।

সমাধানের ধাপসমূহ

  1. preProcess(n) ফাংশন সংজ্ঞায়িত করুন:
    • temp_cubes খালি লিস্ট তৈরি করুন।
    • i = 1 থেকে ceil(n^(1/3)) পর্যন্ত লুপ চালান।
    • প্রতি i এর জন্য cube = i³ হিসাব করুন, স্ট্রিংয়ে রূপান্তর করুন এবং temp_cubes-এ যোগ করুন।
    • temp_cubes রিটার্ন করুন।
  2. solve(num, temp_cubes) ফাংশন সংজ্ঞায়িত করুন:
    • temp_cubes উল্টে দিন।
    • প্রতি কিউব স্ট্রিং temp এর জন্য:
      • index := 0।
      • num-এর প্রতিটি অঙ্ক j এর জন্য: যদি num[j] == temp[index] হয়, তবে index বাড়ান।
      • যদি index == len(temp) হয়, তবে temp রিটার্ন করুন (অর্থাৎ কিউবটি num-এর সাবসিকোয়েন্স হিসেবে পাওয়া গেল)।
    • যদি কোনো কিউব না মিলে, "Not Possible" রিটার্ন করুন।
  3. মূল পদ্ধতিতে:
    • temp_cubes := preProcess(n)।
    • num := str(n)।
    • ans := solve(num, temp_cubes)।
    • ans রিটার্ন করুন।

পাইথন কোড উদাহরণ

import math

def preProcess(n):
    temp_cubes = []
    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))  # আউটপুট: 8

ইনপুট

806

আউটপুট

8
  1. N থেকে M-এ যেতে ন্যূনতম ধাপের সংখ্যা বের করা C++-তে

  2. দেওয়া অঙ্কগুলো দিয়ে গঠিত সর্বোচ্চ সংখ্যা খুঁজে বের করা C++-তে

  3. পাইথনে রোড ট্রিপে ন্যূনতম আন্তর্জাতিক ভ্রমণ ও খরচ বের করা

  4. পাইথনে গ্রাফে সর্বোচ্চ ক্লিকের ন্যূনতম আকার বের করার প্রোগ্রাম