Giả sử chúng ta phải kiểm tra xem một số đã cho có phải là số hoàn hảo hay không. Một số được cho là Số hoàn hảo khi số đó bằng tổng của tất cả các ước số dương ngoại trừ chính nó. Số n sẽ nằm trong phạm vi 1 ^ 8.
Vì vậy, nếu đầu vào là 28, thì đầu ra sẽ là Đúng, vì tổng các ước của nó - 1 + 2 + 4 + 7+ 14 =28.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
Vì các số trong phạm vi 10 ^ 8, chỉ có một số số hoàn hảo, nếu đầu vào đã cho nằm trong tập hợp đó, thì câu trả lời sẽ là đúng, ngược lại là sai. Các số hoàn hảo là 6, 28, 496, 8128 và 33550336.
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool checkPerfectNumber(int num) { set<int> set={6,28,496,8128,33550336}; return set.find(num)!=set.end(); } }; main(){ Solution ob; cout << (ob.checkPerfectNumber(28)); }
Đầu vào
28
Đầu ra
1