C++ 中计算从 2 到 N/2 所有基数下数字 N 的各位数字之和
在这个问题中,我们给定一个数字 N。我们的任务是创建一个程序来查找数字 N 从 2 到 N/2 的所有基数下的各位数字之和。
因此,我们必须将数字的基数转换为从 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
广告