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