在C ++中以2为基数到N / 2的所有基数的N个数字的总和

在这个问题中,给我们一个数字N。我们的任务是创建一个程序,以2为底的N到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 / base,然后将余数加到总和上。然后将找到的每个基数的和值相加以获得结果。

示例

用来说明我们解决方案工作方式的程序 -

#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