हमें पूर्णांक x और p दिए गए हैं। लक्ष्य समीकरण के हल की संख्या ढूंढना है - x² = 1 (mod p) जैसे कि x रेंज [1, N] में है।
हम इसे 1 से N तक पार करके और प्रत्येक संख्या को x के रूप में लेकर करेंगे, जांचेंगे कि (x*x)%p==1 है या नहीं। यदि हां तो काउंट बढ़ाते हैं।
आइए उदाहरणों से समझते हैं।
इनपुट - n=5, p=2
आउटपुट - हल की संख्या: 3
व्याख्या - रेंज 1 से 5 के बीच।
1²=1%2=1, काउंट=1 2²=4%2=0, काउंट=1 3²=9%2=1, काउंट=2 4²=16%2=0, काउंट=2 5²=25%2=1, काउंट=3 कुल हल की संख्या=3।
इनपुट - n=3, p=4
आउटपुट - हल की संख्या: 2
व्याख्या - रेंज 1 से 3 के बीच।
1²=1%4=1, काउंट=1 2²=4%4=0, काउंट=1 3²=9%4=1, काउंट=2 कुल हल की संख्या=2
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम दो वेरिएबल n और p लेते हैं।
फंक्शन solutionsCount(int n,int p) दोनों पैरामीटर n और p लेता है और समीकरण के हल की संख्या लौटाता है: x²%p==1 (या x²=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<<"हल की संख्या: "<<solutionsCount(n, p); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
हल की संख्या: 6