在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

以上是 在C ++中以2为基数到N / 2的所有基数的N个数字的总和 的全部内容, 来源链接: utcz.com/z/356652.html

回到顶部