हमें इनपुट के रूप में एक संख्या num दी गई है। लक्ष्य (i,j) रूप के युग्मों की संख्या ढूंढना है जैसे कि ((num%i)%j)%num अधिकतम हो और i और j दोनों [1,num] रेंज में हों।
आइए उदाहरणों से समझते हैं
इनपुट - num=4
आउटपुट - ((n % i) % j) % n को अधिकतम करने वाले (i, j) युग्मों की गिनती - 3
व्याख्या - युग्म होंगे: (3,2), (3,3), (3,4)
इनपुट - num=6
आउटपुट - ((n % i) % j) % n को अधिकतम करने वाले (i, j) युग्मों की गिनती - 4
व्याख्या - युग्म होंगे: (4,3), (4,4), (4,5), (4,6)
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम इस समस्या को दो दृष्टिकोणों का उपयोग करके हल करेंगे। भोले दृष्टिकोण में, अधिकतम शेष मान प्राप्त किया जा सकता है यदि हमारे पास num अपने आधे के रूप में हो। temp=num/2 +1 सेट करें। अधिकतम शेष को total=num%temp के रूप में सेट करें। i,j के लिए 0 से num तक पार करें और i,j ढूंढें जैसे कि ((num % i) % j) % num == total।
- इनपुट num को पूर्णांक के रूप में लें।
- फ़ंक्शन maximized_pair(int num) num लेता है और ((n % i) % j) % n को अधिकतम करने वाले (i, j) युग्मों की गिनती वापस करता है।
- प्रारंभिक गिनती 0 लें।
- अधिकतम शेष के लिए num को आधा करें। temp = ((num / 2) + 1) सेट करें।
- अधिकतम शेष की गणना total = num % temp के रूप में करें;
- युग्म (i,j) के लिए। i और j के लिए रेंज [1,num] में दो फॉर लूप का उपयोग करके पार करें।
- यदि मान ((num % i) % j) % num total के बराबर है, तो गिनती बढ़ाएं।
- दोनों फॉर लूप के अंत में गिनती को परिणाम के रूप में वापस करें।
कुशल दृष्टिकोण
अधिकतम शेष प्राप्त करें total = num % temp जहां temp है num/2+1। अब युग्म (i,j) के लिए हमें i को num के रूप में चुनना होगा ताकि अधिकतम शेष मिल सके। हम j को रेंज total से num में चुन सकते हैं ताकि total अधिकतम रहे। तो युग्मों की गिनती num-total होगी।
यदि num=2 हो, तो 4 वापस करें क्योंकि युग्म होंगे (1,1), (1,2), (2,1), (2,2) और इसकी गणना num-total का उपयोग करके नहीं की जाएगी।
- इनपुट num को पूर्णांक के रूप में लें।
- फ़ंक्शन maximized_pair(int num) num लेता है और ((n % i) % j) % n को अधिकतम करने वाले (i, j) युग्मों की गिनती वापस करता है।
- प्रारंभिक गिनती 0 लें।
- यदि num==2, तो 4 वापस करें।
- अन्यथा अधिकतम शेष के लिए num को आधा करें। temp = ((num / 2) + 1) सेट करें।
- अधिकतम शेष की गणना total = num % temp के रूप में करें;
- count=num-total सेट करें
- अंत में गिनती को परिणाम के रूप में वापस करें।
उदाहरण (भोला दृष्टिकोण)
#include<bits/stdc++.h>
using namespace std;
int maximized_pair(int num){
int count = 0;
int temp = ((num / 2) + 1);
int total = num % temp;
for (int i = 1; i <= num; i++){
for (int j = 1; j <= num; j++){
int check = ((num % i) % j) % num;
if (check == total){
count++;
}
}
}
return count;
}
int main(){
int num = 10;
cout<<"Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: "<<maximized_pair(num);
}
आउटपुट
Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: 6
उदाहरण (कुशल दृष्टिकोण)
#include<bits/stdc++.h>
using namespace std;
int maximized_pair(int num){
int count = 0;
if (num == 2){
return 4;
}
else{
int temp = ((num / 2) + 1);
int total = num % temp;
count = num - total;
}
return count;
}
int main(){
int num = 10;
cout<<"Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: "<<maximized_pair(num);
}
आउटपुट
Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: 6