একটি সংখ্যা N দেওয়া আছে। N কে বেস ২ থেকে N/2 পর্যন্ত কনভার্ট করে প্রতিটি বেসে এর ডিজিটগুলোর যোগফল বের করতে হবে।
ইনপুট
N = 5
আউটপুট
2
ব্যাখ্যা — বেস ২: 5 = 101₂, ডিজিট যোগফল = 1+0+1 = 2।
পদ্ধতি
- বেস ২ থেকে N/2 পর্যন্ত লুপ করুন।
- প্রতিটি বেসে 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, sum = 0;
CalcSumOfBaseDigits(N, sum);
cout << "Sum of digits of " << N << " in bases 2 to " << N/2 << " = " << sum;
return 0;
}
আউটপুট
The sum of digits of 11 written in all bases from 2 to 5 is 14