ধরুন আমাদের একটি AP সিরিজের একটি প্রথম পদ (A) এবং সাধারণ পার্থক্য (d) আছে এবং আমাদের একটি মৌলিক সংখ্যা Pও আছে, আমাদের প্রথম উপাদানটির অবস্থান খুঁজে বের করতে হবে প্রদত্ত AP-তে যা প্রদত্ত মৌলিক সংখ্যা P.
এর গুণিতকসুতরাং, যদি ইনপুটটি A =3, D =4, P =5 এর মত হয়, তাহলে আউটপুটটি 3 হবে কারণ প্রদত্ত AP-এর চতুর্থ পদটি মৌলিক সংখ্যা 5 এর গুণিতক। সুতরাং, প্রথম পদ =3, দ্বিতীয় পদ =3+4 =7, তৃতীয় পদ =3+2*4 =11 এবং চতুর্থ পদ =3+3*4 =15।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন get_pow() সংজ্ঞায়িত করুন। এটি x, y, p
লাগবে -
উত্তর :=1
-
x :=x mod p
-
যখন y> 0, করবেন
-
যদি y এবং 1 অ-শূন্য হয়, তাহলে
-
উত্তর :=(উত্তর * x) মোড p
-
-
y :=y/2
-
x :=(x * x) মোড p
-
-
উত্তর ফেরত দিন
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
-
A :=A mod P
-
D :=D mod P
-
A যদি 0 এর সমান হয়, তাহলে
-
রিটার্ন 0
-
-
অন্যথায় যখন D 0 এর সমান হয়, তখন
-
রিটার্ন -1
-
-
অন্যথায়,
-
X :=get_pow(D, P - 2, P)
-
রিটার্ন(X *(P - A)) mod P
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def get_pow(x, y, p) : ans = 1 x = x % p while y > 0 : if y & 1 : ans = (ans * x) % p y = y >> 1 x = (x * x) % p return ans def get_nearest(A, D, P) : A %= P D %= P if A == 0 : return 0 elif D == 0 : return -1 else : X = get_pow(D, P - 2, P) return (X * (P - A)) % P A = 3 D = 4 P = 5 print(get_nearest(A, D, P))
ইনপুট
A = 3 D = 4 P = 5
আউটপুট
3