ধরুন, আমাদের একটি বিশাল সংখ্যা প্রদান করা হয়েছে এবং আমাদের খুঁজে বের করতে হবে যে সংখ্যাটির সংখ্যাগুলির কোন স্থানান্তর 8 দ্বারা বিভাজ্য কিনা৷ সংখ্যাটি আমাদের স্ট্রিং বিন্যাসে দেওয়া হয়েছে৷
সুতরাং, যদি ইনপুটটি হয়:input_num =4696984, তাহলে আউটপুট হবে "আট দ্বারা বিভাজ্য"৷
এই সমস্যাটি সমাধান করার জন্য, আমরা সংখ্যার অঙ্কগুলির সাথে সম্ভাব্য সমস্ত তিন-অঙ্কের স্থানান্তরগুলি পরীক্ষা করব এবং দেখব যে সেগুলি সংখ্যার সমস্ত-অঙ্কের স্থানান্তরে ঘটতে পারে কিনা। সংখ্যার একটি অল-ডিজিটের পারমুটেশনের শেষে যদি আট দ্বারা বিভাজ্য একটি তিন-অঙ্কের স্থানান্তর ঘটে, আমরা বলব যে ক্রমক্রম 8 দ্বারা বিভাজ্য৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি ইনপুট_সংখ্যার দৈর্ঘ্য <3 হয়, তাহলে
- যদি input_num mod 8 0 এর মত হয়, তাহলে
- সত্য ফেরান
- input_num :=input_num এর বিপরীত
- যদি input_num mod 8 0 এর মত হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
- যদি input_num mod 8 0 এর মত হয়, তাহলে
- temp_arr :=0s দ্বারা আরম্ভ করা 10 আকারের একটি নতুন তালিকা।
- পরিসীমা 0 থেকে input_num এর আকারে গণনার জন্য, করুন
- temp_arr[input_num[count] - 0] :=temp_arr[input_num[count] - 0] + 1
- 104 থেকে 999 রেঞ্জে গণনার জন্য, 8 দ্বারা বৃদ্ধি করুন, করুন
- তাপ :=গণনা
- ঘটনা :=0s দ্বারা আরম্ভ করা 10 আকারের একটি নতুন তালিকা।
- ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
- temp :=temp / 10
- ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
- temp :=temp / 10
- ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
- তাপ :=গণনা
- যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
- পরবর্তী পুনরাবৃত্তির জন্য যান
- temp :=temp / 10
- যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
- পরবর্তী পুনরাবৃত্তির জন্য যান
- temp :=temp / 10
- যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
- পরবর্তী পুনরাবৃত্তির জন্য যান
- সত্য ফেরান
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(input_num): if len(input_num) < 3: if int(input_num) % 8 == 0: return True input_num = input_num[::-1] if int(input_num) % 8 == 0: return True return False temp_arr = 10 * [0] for count in range(0, len(input_num)): temp_arr[int(input_num[count]) - 0] += 1 for count in range(104, 1000, 8): temp = count occurences = 10 * [0] occurences[int(temp % 10)] += 1 temp = temp / 10 occurences[int(temp % 10)] += 1 temp = temp / 10 occurences[int(temp % 10)] += 1 temp = count if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue temp = temp / 10 if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue temp = temp / 10 if (occurences[int(temp % 10)] > temp_arr[int(temp % 10)]): continue return True return False if solve("4696984"): print("Divisible by eight") else: print("Not divisible by eight")
ইনপুট
4696984
আউটপুট
Divisible by eight