Xét dãy số chỉ dùng 4 chữ số {1,2,3,4}:
1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44, 111, ...
Nhiệm vụ: Tìm số chữ số của số thứ N trong dãy này.
Quan sát quy luật:
- 4 số có 1 chữ số (41)
- 16 số có 2 chữ số (42)
- 64 số có 3 chữ số (43)
- Tiếp tục theo lũy thừa của 4.
Thuật toán
- Khởi tạo
result = 1,sum = 0. - Với
i = 4; lặp vô tận,i *= 4:sum += i- Nếu
sum >= Nthì dừng. result++
- Trả về
result.
Triển khai C++
#include <bits/stdc++.h>
using namespace std;
int getDigitsCount(int n) {
int result = 1, sum = 0;
for (int i = 4; ; i *= 4) {
sum += i;
if (sum >= n) break;
result++;
}
return result;
}
int main() {
int n = 57;
cout << getDigitsCount(n) << endl; // Output: 3
return 0;
}
Kết quả
3