কম্পিউটার

পাইথনের একটি সংখ্যা থেকে ন্যূনতম সংখ্যা মুছে ফেলার মাধ্যমে গঠিত বৃহত্তম ঘনকটি খুঁজুন


ধরুন আমাদের একটি সংখ্যা N আছে, আমাদের সবচেয়ে বড় নিখুঁত ঘনকটি নির্ধারণ করতে হবে যা সংখ্যা থেকে ন্যূনতম সংখ্যাগুলি (সম্ভবত 0) সরিয়ে দিয়ে তৈরি করা যেতে পারে। লক্ষ্যে পৌঁছানোর জন্য আমরা প্রদত্ত নম্বর থেকে যেকোনো সংখ্যা মুছে ফেলতে পারি। আমরা জানি একটি সংখ্যা N কে একটি নিখুঁত ঘনক বলা হয় যদি কিছু পূর্ণসংখ্যা M এর জন্য N =M^3।

সুতরাং, যদি ইনপুট 806 এর মত হয়, তাহলে আউটপুট হবে 8, যেহেতু আমরা সংখ্যা থেকে 0 এবং 6 মুছে ফেলতে পারি, তাহলে আমরা 8 পাব, এটি 2 এর নিখুঁত ঘনক।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন সংজ্ঞায়িত করুন preProcess()। এটি n
  • লাগবে
  • temp_cubes :=একটি নতুন তালিকা
  • আমি 1 থেকে n^(1/3) এর রেঞ্জের মধ্যে, কর
    • কিউব =i^3
    • cubeString :=স্ট্রিং হিসাবে ঘনক্ষেত্র
    • temp_cubes এর শেষে cubeString ঢোকান
    • temp_cubes ফেরত দিন
  • একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি num,temp_cubes
  • লাগবে
  • বিপরীত temp_cubes
  • totalCubes :=temp_cubes এর আকার
  • আমি 0 থেকে টোটাল কিউব রেঞ্জের জন্য, কর
    • temp :=temp_cubes[i]
    • digitsInCube :=তাপমাত্রার আকার
    • সূচক :=0
    • digitsInNumber :=সংখ্যার আকার
    • 0 থেকে digitsInNumber পর্যন্ত j-এর জন্য, করুন
      • যদি num[j] temp[index] এর মত হয়, তাহলে
        • সূচী :=সূচক + 1
      • যদি digitsInCube সূচকের মতো হয়, তাহলে
        • রিটার্ন টেম্প
  • প্রত্যাবর্তন "সম্ভব নয়"
  • পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
  • temp_cubes :=preProcess(n)
  • num :=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) )

ইনপুট

806

আউটপুট

8

  1. C++ এ N থেকে M-এ পৌঁছানোর ন্যূনতম সংখ্যক ধাপ খুঁজুন

  2. C++ এ প্রদত্ত সংখ্যাগুলি দিয়ে তৈরি করা যেতে পারে এমন বৃহত্তম সংখ্যাটি খুঁজুন

  3. পাইথনে একটি রোড ট্রিপে আন্তঃদেশীয় ভ্রমণের ন্যূনতম সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. একটি গ্রাফের বৃহত্তম চক্রের সর্বনিম্ন আকার খুঁজে বের করার জন্য প্রোগ্রাম (পাইথন)