मान लीजिए हमारे पास दो पूर्णांक n और m हैं। हमें n के निकटतम और m से विभाज्य संख्या खोजनी है। यदि ऐसी एक से अधिक संख्याएं हैं, तो वह संख्या दिखाएं जिसका निरपेक्ष मान अधिकतम हो। यदि n पूरी तरह से m से विभाज्य है, तो n वापस करें। तो यदि n = 13, m = 4, तो आउटपुट 12 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन कर सकते हैं -
- मान लें q := n/m, और n1 := m*q
- यदि n * m > 0, तो n2 := m * (q + 1), अन्यथा n2 := m * (q - 1)
- यदि |n - n1| < |n - n2|, तो n1 वापस करें, अन्यथा n2
उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int findClosest(int n, int m) {
int q = n / m;
int n1 = m * q;
int n2 = (n * m) > 0 ? (m * (q + 1)) : (m * (q - 1));
if (abs(n - n1) < abs(n - n2))
return n1;
return n2;
}
int main() {
int n = 13, m = 4;
cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
n = 0; m = 8;
cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
n = 18; m = -7;
cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
}
आउटपुट
Closest for n = 13, and m = 4: 12 Closest for n = 0, and m = 8: 0 Closest for n = 18, and m = -7: 21