ตัวเลขที่เกิดจากตัวเลข {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.
- สร้างตัวเลขที่เหลือด้วยรูปแบบที่กล่าวถึงข้างต้น
- ดันพวกมันไปที่เวกเตอร์
- เขียนลูปที่วนซ้ำจาก 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