समस्या विवरण
हमें एक संख्या N दी गई है। लक्ष्य 1 से N तक की संख्याओं के उन जोड़ों (i,j) की गणना करना है जहाँ i*j, i+j से विभाज्य हो (अर्थात (i*j) % (i+j) == 0)।
उदाहरण
इनपुट: N = 11
आउटपुट: 1
व्याख्या: (3,6): 3*6=18, 3+6=9, 18%9=0
इनपुट: N = 30
आउटपुट: 12
व्याख्या: (3,6), (4,12), (5,20), (6,12), (6,30), (8,24), (9,18), (10,15), (12,24), (15,30), (20,30), (21,28)
दृष्टिकोण
दो नेस्टेड लूप: i=1 से N-1, j=i+1 से N। यदि (i*j)%(i+j)==0 तो गणना बढ़ाएँ।
एल्गोरिदम
- प्रारंभिक
count = 0 i=1सेN-1तक:j=i+1सेNतक:- यदि
(i*j)%(i+j)==0तोcount++
- यदि
countलौटाएँ
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
int Sum_N(int N) {
int count = 0;
for (int i = 1; i < N; i++) {
for (int j = i + 1; j <= N; j++) {
if ((i * j) % (i + j) == 0)
count++;
}
}
return count;
}
int main() {
int N = 20;
cout << "Count: " << Sum_N(N);
return 0;
}
आउटपुट
Count: 6