使用 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
廣告