Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาพจน์ลำดับที่ P ของลำดับเรขาคณิต หากทราบพจน์ลำดับที่ M และ N ใน C++

ในปัญหานี้ เราได้รับค่าห้าค่า m, n, mth term, nth term, p งานของเราคือ หาพจน์ลำดับที่ P ของลำดับเรขาคณิต หากทราบพจน์ลำดับที่ M และ N

สำหรับลำดับเรขาคณิต (GP) เราได้รับค่าของพจน์ลำดับที่ m และพจน์ลำดับที่ n โดยใช้ค่าเหล่านี้ เราต้องหาพจน์ลำดับที่ P ของอนุกรม

มาดูตัวอย่างเพื่อเข้าใจปัญหา

Input

m = 7, mthTerm = 1458, n = 10, nthterm = 39366, p = 3

Output

18

วิธีแก้ปัญหา

สมมติว่าลำดับเรขาคณิตคือ

GP = a, a*r, a*(r^2), a*(r^3) ...

สูตรสำหรับพจน์ลำดับที่ T คือ

T-th Term = a * r^(T-1)

ตอนนี้ เราได้รับพจน์ลำดับที่ n และ m

mth term = a * (r^(m-1)) 
nth term = a * (r^(n-1))

หารสมการทั้งสอง เราจะได้

mth term / nth term = (r^(m - n))

ใช้สมการนี้ เราสามารถหาค่า r ได้ แล้วหา a จากค่าพจน์ลำดับที่ m

mth term = a * (r^(m-1))

หลังจากหา a และ r แล้ว ค่าพจน์ลำดับที่ p สามารถหาได้ง่ายๆ จาก

pth term = a * (r^(p-1))

โปรแกรมแสดงการทำงานของวิธีแก้

ตัวอย่าง

#include <cmath> 
#include <iostream> 
using namespace std; 

double findRinGP(double m, double n, double mth, double nth) { 
    if (m < n) 
        return pow(nth / mth, 1.0 / (n - m)); 
    return pow(mth / nth, 1.0 / (m - n)); 
} 

double findTermGP(int m, int n, double mth, double nth, int p) { 
    double r = findRinGP(m, n, mth, nth); 
    double a = mth / pow(r, (m - 1)); 
    return (a * pow(r, (p - 1))); 
} 

int main() { 
    int m = 7, n = 10, p = 5; 
    double mth = 1458, nth = 39366; 
    cout<<"The "<<p<<"th of the series is "<<findTermGP(m, n, mth, nth, p); 
    return 0; 
}

ผลลัพธ์

The 5th of the series is 162