समस्या विवरण
मान लीजिए हमें जांचना है कि दी गई संख्या परफेक्ट नंबर है या नहीं। एक संख्या को परफेक्ट नंबर कहा जाता है जब वह अपने सभी धनात्मक भाजकों के योग के बराबर होती है, स्वयं को छोड़कर। संख्या n 10^8 की रेंज में होगी।
उदाहरण
यदि इनपुट है: 28, तो आउटपुट होगा True, क्योंकि इसके भाजकों का योग 1 + 2 + 4 + 7 + 14 = 28 होता है।
हल करने का दृष्टिकोण
चूंकि संख्याएं 10^8 की रेंज में हैं, केवल कुछ ही परफेक्ट नंबर होते हैं। यदि दिया गया इनपुट उस सेट में है, तो उत्तर true होगा, अन्यथा false। परफेक्ट नंबर हैं: 6, 28, 496, 8128 और 33550336।
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool checkPerfectNumber(int num) {
set<int> perfectNumbers = {6, 28, 496, 8128, 33550336};
return perfectNumbers.find(num) != perfectNumbers.end();
}
};
int main() {
Solution ob;
cout << (ob.checkPerfectNumber(28));
return 0;
}
इनपुट
28
आउटपुट
1