এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল 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