ধরুন, আমাদের একটি বিশাল সংখ্যা প্রদান করা হয়েছে এবং আমাদের খুঁজে বের করতে হবে যে সংখ্যাটির সংখ্যাগুলির কোন স্থানান্তর 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