Cho dãy: 3, 5, 33, 35, 53, 55... (chỉ chứa 3 và 5). Tìm số hạng thứ N.
Đệ quy / Quy hoạch động
Tương tự dãy 1,2,11,12...: T(1)=3, T(2)=5. N lẻ: T(N)=T(N/2)*10+3; N chẵn: T(N)=T(N/2-1)*10+5.
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
int printNthElement(int n) {
vector arr(n+1);
arr[1]=3; arr[2]=5;
for (int i=3; i<=n; i++) {
if (i%2) arr[i] = arr[i/2]*10 + 3;
else arr[i] = arr[i/2 - 1]*10 + 5;
}
return arr[n];
}
int main() {
int n = 6;
cout << printNthElement(n); // 55
return 0;
}
Đầu ra
55