Trong bài toán này, chúng ta được cho một giá trị nguyên N. Nhiệm vụ của chúng ta là Tìm số hạng thứ n của dãy cho trước −
0, 0, 2, 1, 4, 2, 6, 3, 8, 4, 10, 5, 12, 6, 14, 7, 16, 8, 18, 9, 20, 10…
Hãy xem ví dụ sau để hiểu bài toán:
Input − N = 6 Output − 2
Phương pháp giải
Để tìm số hạng thứ N của dãy, ta cần quan sát kỹ dãy. Nó là sự kết hợp của hai dãy tại vị trí lẻ và chẵn. Hãy xem từng dãy:
Ở vị trí chẵn −
- T(2) = 0
- T(4) = 1
- T(6) = 2
- T(8) = 3
- T(10) = 4
Giá trị tại T(n) nếu n chẵn là {(n/2) - 1}
Ở vị trí lẻ −
- T(1) = 0
- T(3) = 2
- T(5) = 4
- T(7) = 6
- T(9) = 4
Giá trị tại T(n) nếu n lẻ là {n - 1}
Ví dụ
Chương trình minh họa cho giải pháp
#include <iostream> using namespace std; bool isEven(int n){ if(n % 2 == 0) return true; return false; } int findNthTerm(int n){ if (isEven(n)) return ((n/ 2) - 1); else return (n - 1); } int main(){ int N = 45; cout<<N<<"th term of the series is "<<findNthTerm(N); return 0; }Kết quả
45th term of the series is 44