- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ program to find nth Term of the Series 1 2 2 4 4 4 4 8 8 8 8 8 8 8 8 …
In this problem, we are given an integer N. Our task is to create a program to Find Nth term of series 1, 2, 2, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8…
Let’s take an example to understand the problem,
Input
N = 7
Output
4
Solution Approach
A simple approach to solve the problem is using a loop to find the term at the nth position. The terms will be updated by doubling after each iteration. And adding it to the term counter.
Program to illustrate the working of our solution,
Example
#include <iostream> using namespace std; int calcNthTerm(int N) { int termCounter = 0, termValue = 1; while (termCounter < N) { termCounter += k; termValue *= 2; } return termValue / 2; } int main() { int N = 10; cout<<N<<"th term of the series is "<<calcNthTerm(N); return 0; }
Output
10th term of the series is 8
Efficient Approach
An efficient approach to solve the problem is by finding the general term of the series.
Here, are terms and their last index, 1 -> last index = 1. 2 -> last index = 3. 4 -> last index = 7. 8 -> last index = 15. . . T(N) -> last index = 2*(T(N)) - 1 Also, T(N) is always of a power of 2, i.e. T(N) = 2m 2m lies in the series till the index 2m+1-1.
To find the term we can calculate the value of 2(m) - 1 using N.
This makes 2m - 1 < N.
2m - 1 < N So, m < log2(N + 1)
Program to illustrate the working of our solution,
Example
#include <iostream> #include <math.h> using namespace std; int calcNthTerm(int N) { return ( pow(2, (floor)(log(N + 1) / log(2)) ) ) ; } int main() { int N = 10; cout<<N<<"th term of the series is "<<calcNthTerm(N); return 0; }
Output
10th term of the series is 8
Advertisements