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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP