समस्या कथन
दो धनात्मक पूर्णांक N और X दिए गए हैं। कार्य N को X (X0 + X1 +…..+ Xn) की घातों के योग के रूप में व्यक्त करना है ताकि X की घातों की संख्या न्यूनतम हो।
योग को N के बराबर बनाने के लिए उपयोग की जाने वाली N की न्यूनतम संख्या को प्रिंट करें।
यदि N =15 और X =3 तो हमें '3' की 3 घातों की आवश्यकता इस प्रकार है -
15 =(3 2 + 3 1 + 3 1 )
एल्गोरिदम
अंतिम परिणाम की गणना के लिए नीचे दिए गए सूत्र का उपयोग करें -
1. If x = 1, then answer will be n only (n = 1 + 1 +…. n times)s 2. Any number n can be expressed as, n = x * a + b where 0 −= b −= x-1. Now since b is between 0 to x – 1, then b should be expressed as sum of x0 b times
उदाहरण
#include <iostream> using namespace std; int minNumOfPower(int n, int x){ if (x == 1) { return n; } int result = 0; while (n > 0) { result = result + (n % x); n = n / x; } return result; } int main(){ int n = 15; int x = 3; cout << "Minimum number of powers = " << minNumOfPower(15, 3) << endl; return 0; }
आउटपुट
जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है -
Minimum number of powers = 3