C++中使用{0, 1, 2, 3, 4, 5}这些数字组成的第n个数


用数字{0, 1, 2, 3, 4, 5}组成的数字是

0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25,等等…

我们可以使用前6个数字来形成上述序列。让我们来看一个数字形成的例子。

1 * 10 + 0 = 10
1 * 10 + 1 = 11
1 * 10 + 2 = 12
1 * 10 + 3 = 13
1 * 10 + 4 = 14
1 * 10 + 5 = 15

同样,对数字2、3、4、5也适用。使用上述模式,你将得到接下来的6个以2开头的数字。然后是3,之后是4和5。

算法

  • 初始化数字n。
  • 初始化一个向量。
  • 编写一个从0迭代到5的循环。
    • 将所有数字推入向量。
  • 我们得到了这个序列的前六个数字。
  • 编写一个从0迭代到n/6的循环。
    • 编写一个从0迭代到5的循环。
      • 使用上述讨论的模式生成剩余的数字。
      • 将它们推入向量。
  • 从序列中返回第n个数字。

实现

以下是上述算法在C++中的实现

#include <bits/stdc++.h>

using namespace std;

int findNthNumber(int n) {
   vector<int> numbers;

   for (int i = 0; i < 6; i++) {
      numbers.push_back(i);
   }
   for (int i = 0; i <= n / 6; i++) {
      for (int j = 0; j < 6; j++) {
         if ((numbers[i] * 10) != 0) {
            numbers.push_back(numbers[i] * 10 + numbers[j]);
         }
      }
   }
   return numbers[n - 1];
}
int main() {
   int n = 7;
   cout << findNthNumber(n) << endl;
   return 0;
}

输出

如果你运行上面的代码,你将得到以下结果。

10

更新于:2021年10月22日

279 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告