ধরুন আমাদের একটি সংখ্যা 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 সূচকের মতো হয়, তাহলে
- রিটার্ন টেম্প
- যদি num[j] temp[index] এর মত হয়, তাহলে
- প্রত্যাবর্তন "সম্ভব নয়"
- পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- 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