समस्या कथन
हमारे पास एक पूर्णांक N है। हमें N को K पूर्णांकों के योग के रूप में व्यक्त करने की आवश्यकता है जैसे कि इनमें से कुछ या सभी पूर्णांकों को जोड़कर हम 1 से N तक की सभी संख्याएँ प्राप्त कर सकते हैं। कार्य K का न्यूनतम मान ज्ञात करना है। /पी>
उदाहरण
यदि N =8 है तो अंतिम उत्तर यानी K होगा 3
यदि हम पूर्णांक 1, 2, 3 और 4 लेते हैं तो इनमें से कुछ या सभी समूहों को जोड़ने पर हम 1 से N तक की सभी संख्याएँ प्राप्त कर सकते हैं
e.g. 1 = 1 2 = 2 3 = 3 4 = 4 5 = 1 + 5 6 = 4 + 2 7 = 4 + 3 8 = 1 + 3 + 4
एल्गोरिदम
Count number of bits from given integer
उदाहरण
#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 << "Minimum required numbers = " <<getMinNumbers(n) << endl; return 0; }
जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है
आउटपुट
Minimum required numbers = 4