使用 C++ 找出由給定四個數字組成的第 n 個數的位數


我們需要找到由給定的四個數字 1、2、3 和 4 組成的第 n 個數的位數。

使用上述四個數字的序列如下所示

1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...

我們需要找到上述序列中第 n 個數的位數。如果你仔細觀察模式,你會發現以下幾點。

  • 有 4 個數字的位數是 1。

  • 有 16 個數字的位數是 2。

  • 該模式以 4 的冪繼續。

讓我們看一個例子

輸入

7

輸出

2

該序列中的第 7 個數是 13,其位數為 2。

演算法

  • 初始化數字 n。
  • 初始化兩個變數,一個用於儲存結果,另一個用於儲存序列中數字的總和。
  • 建立一個迴圈,使迭代變數以 4 的冪遞增。
    • 將當前數字新增到 sum 變數。
    • 如果總和大於 n,則中斷迴圈。
    • 將結果加 1,因為下一組數字的位數比上一組數字多一位。
  • 返回結果。

實現

以下是上述演算法在 C++ 中的實現

#include <bits/stdc++.h>
using namespace std;
int getDigitsCount(int n) {
   int i, result = 1, sum = 0;
   for (i = 4; ; i *= 4) {
      sum += i;
      if (sum >= n) {
         break;
      }
      result += 1;
   }
   return result;
}
int main() {
   int n = 57;
   cout << getDigitsCount(n) << endl;
   return 0;
}

輸出

如果你執行以上程式碼,你將得到以下結果。

3

更新於: 2021-10-26

125 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告