Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวเลขที่ n ที่มีตัวเลขใน {0, 1, 2, 3, 4, 5} ใน C++


ตัวเลขที่เกิดจากตัวเลข {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-th จากลำดับ

การนำไปใช้

ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน 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