इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो 2 से N/2 तक आधारों में संख्या N के अंकों का योग निकाले।
तो, हमें संख्या के आधार को 2 से N/2 तक सभी आधारों में बदलना होगा यानी n = 9 के लिए, आधार 2, 3, 4 होंगे। और इन आधारों में सभी अंकों का योग ढूंढना होगा।
आइए एक उदाहरण लेकर समस्या को समझते हैं,
इनपुट
N = 5
आउटपुट
2
व्याख्या
2 से N/2 तक आधार 2 है। 5 का आधार 2 = 101, अंकों का योग 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 << " " << N << " के अंकों का योग 2 से " << (N/2) << " तक सभी आधारों में लिखा है: " << sum;
return 0;
}
आउटपुट
11 के अंकों का योग 2 से 5 तक सभी आधारों में लिखा है: 14