在本教程中,我们将编写一个程序,计算由给定的四位数字 1、2、3 和 4 组成的第 n 个数字中的位数。
上面四位数字的序列如下
1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24...
我们需要从上述系列中找出第 n 个数字的位数。如果仔细观察图案,您会发现以下几点。
有 4 个数字,数字为 1。
有 16 个数字,数字为 2。
该模式继续作为 4 的幂。
创建一个循环,将迭代变量增加 4 的幂。并计算迭代次数,直到所有看到的数字的总和不大于给定的数字n。
让我们看看代码。
#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
如果您对本教程有任何疑问,请在评论部分提及。