Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số hạng thứ P của GP nếu số hạng thứ M và số hạng thứ N được cho trong C ++

Trong bài toán này, chúng ta được đưa ra năm giá trị m, n, số hạng thứ m, số hạng thứ n, p. Nhiệm vụ của chúng ta là Tìm số hạng thứ P của GP nếu số hạng thứ M và số hạng N được đưa ra.

Đối với một GP, chúng tôi được cung cấp các giá trị của số hạng thứ m và số hạng thứ n. Sử dụng các giá trị này, chúng ta cần tìm số hạng thứ P của chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

18

Phương pháp tiếp cận giải pháp

Tại đây, chúng tôi được cấp một bác sĩ đa khoa. giả sử GP là,

GP = a , a*r , a*(r2), a*(r3) ….

Công thức cho T th hạn là

Tth Term = a * r(T-1)

Bây giờ, chúng ta có số hạng thứ n và thứ m,

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

Chia các phương trình chúng ta nhận được,

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

Sử dụng phương trình này, chúng ta có thể tìm giá trị của r, Sau đó, a có thể được tìm thấy bằng cách sử dụng giá trị của số hạng thứ m là

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

Khi đó sau khi tìm giá trị của a và r. Có thể dễ dàng tìm thấy giá trị của số hạng p bằng cách sử dụng,

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

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

The 5th of the series is 162