আমাদের x এবং p পূর্ণসংখ্যা দেওয়া হয়েছে। লক্ষ্য হল −x 2 সমীকরণের সমাধানের সংখ্যা বের করা =1 ( mod p ) যেমন x সীমা [1,N] এর মধ্যে থাকে।
আমরা 1 থেকে N পর্যন্ত যাত্রা করে এটি করব এবং প্রতিটি সংখ্যাকে x হিসাবে নেব কিনা (x*x)%p==1। যদি হ্যাঁ হয় তাহলে গণনা বৃদ্ধি করুন।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − n=5, p=2
আউটপুট − সমাধানের সংখ্যা − 3
ব্যাখ্যা − রেঞ্জ 1 থেকে 5 এর মধ্যে।
12=1%2=1, count=1 22=4%2=0, count=1 32=9%2=1, count=2 42=16%2=0, count=2 52=25%2=1, count=3 Total number of solutions=3.
ইনপুট − n=3, p=4
আউটপুট − সমাধানের সংখ্যা − 2
ব্যাখ্যা − রেঞ্জ 1 থেকে 3 এর মধ্যে।
12=1%4=1, count=1 22=4%4=0, count=1 32=9%4=1, count=2 Total number of solutions=2
নীচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
আমরা দুটি চলক n এবং p.
নিই -
ফাংশন সমাধান গণনা(int n,int p) n এবং p উভয় প্যারামিটার নেয় এবং সমীকরণের সমাধানের সংখ্যা প্রদান করে:x 2 %p==1 (বা x 2 =1 ( mod p ) ).
-
x=1 থেকে x=n পর্যন্ত, পরীক্ষা করুন x*x==1 কিনা, যদি হ্যাঁ বৃদ্ধির সংখ্যা।
-
লুপের শেষে, গণনায় সমাধানের সংখ্যা থাকবে।
-
ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ
#include<bits/stdc++.h> using namespace std; int solutionsCount(int n, int p){ int count = 0; for (int x=1; x<=n; x++){ if ((x*x)%p == 1) { ++count; } } return count; } int main(){ int n = 8, p = 3; cout<<"Number of solutions :"<<solutionsCount(n, p); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেNumber of solutions : 6