ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N ภารกิจของเราคือ หาพจน์ที่ n ของอนุกรม -
14, 28, 20, 40, 32, 64, 56, 112...
มาดูตัวอย่างเพื่อเข้าใจปัญหา
อินพุต
N = 6
เอาต์พุต
64
วิธีการแก้ปัญหา
เพื่อหาพจน์ที่ N ของอนุกรม เราต้องหาพจน์ทั่วไปของอนุกรม ซึ่งต้องสังเกตอนุกรมอย่างใกล้ชิด ฉันเห็นสองวิธีที่แตกต่างกันในการแก้อนุกรมนี้
วิธีที่ 1
อนุกรมเป็นการผสมของสองอนุกรมที่แตกต่างกันที่ตำแหน่งคู่และคี่
ที่ตำแหน่งคี่ - 14, 20, 32, 56, ...
T1 = 14 T3 = 20 = T1 + 6 T5 = 32 = T3 + 12 T7 = 56 = T5 + 24 = T1 + 6 + 12 + 24 = T1 + 6*(1 + 2 + 4) TN = T1 + 6(20 + 21 + 22 +....+ 2((N/2) - 1 ) )
ที่ตำแหน่งคู่ - 28, 40, 64, 112...
T2 = 28 T4 = 40 = T2 + 12 T6 = 64 = T4 + 24 T8 = 112 = T6 + 48 = T2 + 12 + 24 + 48 = T2 + 6*(2 + 4 + 8) TN = T2 + 6(21 + 22 +....+ 2((N/2) - 1 ) )
พจน์ที่ N ของอนุกรมคือ
$\mathrm{T_{N}\, =\, T_{s}\, +\, 6\left ( \sum 2^{\left ( \left ( N/2 \right )-1 \right )} \right )}$ ,โดยค่าจาก s ถึง N เพิ่มทีละ 2
สำหรับค่าคู่ s = 2,
สำหรับค่าคี่ s = 1.
ตัวอย่าง
#include <iostream> #include <math.h> using namespace std; long findNthAdd(int s, int i, int n){ int sum = 0; for(; i <= n; i+= 2){ sum += pow(2, (int)((i/2) - 1)); } return 6*sum; } long findNthTermSeries(int n){ int s, i; if(n % 2 == 0){ s = 28; i = 4; } else{ s = 14; i = 3; } return ( s + findNthAdd(s, i, n)); } int main(){ int n = 15; cout<<n<<"th term of the series is "<<findNthTermSeries(n); return 0; }
เอาต์พุต
15th term of the series is 776
วิธีแก้อีกวิธีหนึ่ง
อีกวิธีหนึ่งที่สามารถหาพจน์ที่ N ได้คือการใช้ข้อเท็จจริงว่าพจน์ปัจจุบันเป็นสองเท่าของพจน์ก่อนหน้าหรือน้อยกว่าพจน์ก่อนหน้า 8 ขึ้นอยู่กับว่ามันเป็นคู่หรือคี่
ถ้า N เป็นคู่ TN = 2*T(N-1) ถ้า N เป็นคี่ TN = T(N-1) - 8
ดังนั้น เราต้องลูปจาก 2 ถึง N และหา Ti โดยตรวจสอบว่ามันเป็นคู่หรือคี่
ตัวอย่าง
โปรแกรมสาธิตการทำงานของวิธีแก้ปัญหาของเรา
#include <iostream> using namespace std; bool isEven(int N){ if(N % 2 == 0) return true; return false; } int findNthTermSeries(int n){ int TermN = 14; for (int i = 2; i <= n; i++) { if (isEven(i)) TermN *= 2; else TermN -= 8; } return TermN; } int main(){ int n = 15; cout<<n<<"th term of the series is "<<findNthTermSeries(n); return 0; }
เอาต์พุต
15th term of the series is 776