কম্পিউটার

C++ এ প্রদত্ত পরিসরে x^2 =1 (mod p) এর সমাধানের সংখ্যা গণনা করুন


আমাদের 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

  1. C++ এ প্রদত্ত সংখ্যা দ্বারা বিভাজ্য n সংখ্যার সংখ্যা গণনা করুন

  2. C++ এ প্রদত্ত N এর সাথে 1 যোগ করার পর পরিবর্তিত বিটের সংখ্যা গণনা করা হয়েছে

  3. C++ এ হেক্সাডেসিমেল সংখ্যা গণনা করুন

  4. C++ এ একটি প্রদত্ত পরিসরে ফ্যাক্টরিয়াল সংখ্যা গণনা করুন