ধরুন আমাদের দুটি সংখ্যা আছে n এবং m। 1s-এর n সংখ্যাকে m দ্বারা ভাগ করার পর আমাদের অবশিষ্টাংশ বের করতে হবে।
সুতরাং, যদি ইনপুট n =4 m =27 এর মত হয়, তাহলে আউটপুট হবে 4, কারণ 1111 mod 27 =4।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
একটি ফাংশন util() সংজ্ঞায়িত করুন। এটি x, n, m
লাগবে- y :=1
- যখন n> 0, do
- যদি n বিজোড় হয়, তাহলে
- y :=(y * x) mod m
- x :=(x * x) mod m
- n :=n/2 এর মেঝে
- যদি n বিজোড় হয়, তাহলে
- ই ফেরত দিন
মূল পদ্ধতি থেকে (util(10, n, 9 * m) / 9)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def util(x, n, m) : y = 1 while n > 0 : if n & 1 : y = (y * x) % m x = (x * x) % m n >>= 1 return y def solve(n, m): return util(10, n, 9 * m) // 9 n = 4 m = 27 print(solve(n, m))
ইনপুট
4, 27
আউটপুট
4