在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