इस समस्या में, हमें एक संख्या N दी जाती है। हमारा कार्य 2 से N/2 तक के आधारों में संख्या N के अंकों का योग ज्ञात करने के लिए एक प्रोग्राम बनाना है।पी>
तो, हमें संख्या के आधार को 2 से N/2 में सभी आधारों में बदलना होगा यानी n =9 के लिए, आधार 2, 3, 4 होंगे। और इन आधारों में सभी अंकों का योग ज्ञात कीजिए।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 5
आउटपुट
2
स्पष्टीकरण
base from 2 to N/2 is 2. 52 = 101, sum of digits is 2.
इस समस्या को हल करने के लिए, हम 2 से N/2 तक की प्रत्येक संख्या को आधार के रूप में लेते हैं। और फिर अंकों के योग की गणना करने के लिए, हम बार-बार N को आधार यानी N =N/आधार से विभाजित करेंगे, और शेष मान को योग में जोड़ देंगे। और फिर परिणाम प्राप्त करने के लिए प्रत्येक आधार के लिए पाए गए योग मानों को जोड़ें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम -
#include <iostream> using namespace std; int findBaseSum(int n, int base, int &sum){ while (n > 0) { sum += n % base; n /= base; } return sum; } void CalcSumOfBaseDigits(int n, int &sum){ for (int base = 2; base <= n / 2; base++) findBaseSum(n, base, sum); } int main(){ int N = 11; int sum = 0; CalcSumOfBaseDigits(N, sum); cout<<"The sum of digits of "<<N<<" written in all bases from 2 to "<<(N/2)<<" is "<<sum; return 0; }
आउटपुट
The sum of digits of 11 written in all bases from 2 to 5 is 14