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

Tìm số hạng thứ N của chuỗi 14, 28, 20, 40,… .. bằng C ++

Trong bài toán này, chúng tôi được cung cấp một giá trị nguyên N. Nhiệm vụ của chúng tôi là tìm thứ n của chuỗi -

14, 28, 20, 40, 32, 64, 56, 112….

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

Đầu vào

N = 6

Đầu ra

64

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

Để tìm số hạng thứ N của chuỗi, chúng ta cần tìm số hạng chung của các số này. Mà chúng ta cần phải quan sát chuỗi chặt chẽ. Tôi có thể thấy hai cách khác nhau để giải quyết chuỗi.

Phương pháp 1

Chuỗi là hỗn hợp của hai chuỗi khác nhau ở các vị trí chẵn và lẻ.

Ở các vị trí lẻ - 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 ) )

Ở các vị trí chẵn - 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 ) )

Số hạng thứ N của chuỗi là

$ \ mathrm {T_ {N} \, =\, T_ {s} \, + \, 6 \ left (\ sum 2 ^ {\ left (\ left (N / 2 \ right) -1 \ right)} \ right)} $, trong đó giá trị từ s đến N tăng thêm 2.

Đối với các giá trị chẵn s =2,

Đối với các giá trị lẻ s =1.

Ví dụ

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

Đầu ra

15th term of the series is 776

Một giải pháp khác

Một cách nữa, khi sử dụng số hạng thứ N có thể tìm được là sử dụng thực tế là số hạng hiện tại gấp đôi số hạng trước đó hoặc kém 8 hơn so với số hạng trước dựa trên số chẵn / lẻ.

If N is even TN = 2*T(N-1)
If N is odd TN = T(N-1) - 8

Vì vậy, chúng ta cần lặp từ 2 đến N và tìm T i bằng cách kiểm tra xem nó chẵn hay lẻ.

Ví dụ

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

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

Đầu ra

15th term of the series is 776