Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 M번째 및 N번째 항이 주어진 경우 GP의 P번째 항 찾기

<시간/>

이 문제에서 우리는 5개의 값 m, n, mth term, nth term, p를 받습니다. 우리의 임무는 M번째와 N번째 항이 주어진 경우 GP의 P번째 항을 찾는 것입니다.

GP의 경우 m번째 항과 n번째 항의 값이 제공됩니다. 이 값을 사용하여 계열의 P번째 항을 찾아야 합니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

입력

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

출력

18

솔루션 접근 방식

여기에서 우리는 GP를 받습니다. GP가 다음과 같다고 가정해 보겠습니다.

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

T th 공식 기간은

Tth 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))

그런 다음 및 r의 값을 찾은 후. pth 용어의 값은 다음을 사용하여 쉽게 찾을 수 있습니다.

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