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

更新於: 2020-08-06

120 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.