समस्या कथन
हमारे पास एक पूर्णांक N है। हमें N को K पूर्णांकों के योग के रूप में व्यक्त करना है जैसे कि इन पूर्णांकों में से कुछ या सभी को जोड़कर हम 1 से N की सीमा में सभी संख्याएं प्राप्त कर सकें। कार्य K का न्यूनतम मान खोजना है
उदाहरण
यदि N = 8 तो अंतिम उत्तर यानी K 3 होगा
यदि हम पूर्णांक 1, 2, 3, और 4 लेते हैं तो इन समूहों में से कुछ या सभी को जोड़कर हम 1 से N की सीमा में सभी संख्याएं प्राप्त कर सकते हैं
उदाहरण: 1 = 1 2 = 2 3 = 3 4 = 4 5 = 1 + 5 6 = 4 + 2 7 = 4 + 3 8 = 1 + 3 + 4
एल्गोरिदम
दिए गए पूर्णांक से बिट्स की संख्या गिनें
उदाहरण
#include <bits/stdc++.h> using namespace std; int getMinNumbers(int n) { int cnt = 0; while (n) { ++cnt; n = n >> 1; } return cnt; } int main() { int n = 8; cout << "न्यूनतम आवश्यक संख्याएं = " <<getMinNumbers(n) << endl; return 0; }जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है
आउटपुट
न्यूनतम आवश्यक संख्याएं = 4