ภาพรวมปัญหา
ระบบเลขที่ใช้ได้แค่ 3 และ 4: 3, 4, 33, 34, 43, 44, 333, 334, 343, 344, ...
หาตัวเลขตัวที่ N
ตัวอย่าง
อินพุต
N = 6
เอาต์พุต
44
วิธีแก้ปัญหา
คล้าย Binary แต่มัป 0→3, 1→4
ตัวที่ N = (N-1) ในระบบ "S-Binary" (3/4 Binary)
โค้ดตัวอย่าง (Recursive)
#include <iostream>
using namespace std;
void findNThTermNumberSystem(int N) {
if (N == 1 || N == 2) {
cout << (N - 1) + 3; // 3 หรือ 4
return;
}
N -= 1;
findNThTermNumberSystem(N / 2);
cout << ((N % 2) + 3); // 0→3, 1→4
}
int main() {
int N = 12;
cout << N << "th term of the number system is ";
findNThTermNumberSystem(N);
return 0;
}
เอาต์พุต
12th term of the number system is 434
สรุป
แปลง N-1 เป็นไบนารี แล้วมัป 0→3, 1→4 ใช้ Recursion หรือ Loop ได้ทั้งคู่