There is a series of numbers that have only digits, 4 and 7, and numbers are arranged in increasing order. The first few numbers of the series are **4, 7, 44, 47, 74, 77, 444, …etc.** Given a number **N**, the task is to find the position of that number in the given series.

**Examples:**

Input:N = 4

Output:1

Explanation:

The first number in the series is 4

Input:N = 777

Output:14

Explanation:

The 14th number in the series is 777

**Approach:** This problem can be solved using the below observations:

- Below is the pattern observe in the given series. The numbers can be seen as:
"" / \ 4 7 / \ / \ 44 47 74 77 / \ / \ / \ / \

- As we can observe the pattern is increasing in power of
**2**. Therefore the idea is to iterate over the digits of the number starting from the least significant digit and update the position of the number as:- If current digit = 7, then add to the position.
- If current digit = 4, then add to the position.

- Print the final position after the above operations.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the position ` `// of the number N ` `void` `findPosition(` `int` `n) ` `{ ` ` ` `int` `i = 0; ` ` ` ` ` `// To store the position of N ` ` ` `int` `pos = 0; ` ` ` ` ` `// Iterate through all digit of N ` ` ` `while` `(n > 0) { ` ` ` ` ` `// If current digit is 7 ` ` ` `if` `(n % 10 == 7) { ` ` ` `pos = pos + ` `pow` `(2, i + 1); ` ` ` `} ` ` ` ` ` `// If current digit is 4 ` ` ` `else` `{ ` ` ` `pos = pos + ` `pow` `(2, i); ` ` ` `} ` ` ` ` ` `i++; ` ` ` `n = n / 10; ` ` ` `} ` ` ` ` ` `// Print the final position ` ` ` `cout << pos; ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `// Given number of the series ` ` ` `int` `N = 777; ` ` ` ` ` `// Function Call ` ` ` `findPosition(N); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java program for the above approach ` `import` `java.util.*; ` `class` `GFG{ ` ` ` `// Function to find the position ` `// of the number N ` `static` `void` `findPosition(` `int` `n) ` `{ ` ` ` `int` `i = ` `0` `; ` ` ` ` ` `// To store the position of N ` ` ` `int` `pos = ` `0` `; ` ` ` ` ` `// Iterate through all digit of N ` ` ` `while` `(n > ` `0` `) ` ` ` `{ ` ` ` ` ` `// If current digit is 7 ` ` ` `if` `(n % ` `10` `== ` `7` `) ` ` ` `{ ` ` ` `pos = pos + (` `int` `)Math.pow(` `2` `, i + ` `1` `); ` ` ` `} ` ` ` ` ` `// If current digit is 4 ` ` ` `else` ` ` `{ ` ` ` `pos = pos + (` `int` `)Math.pow(` `2` `, i); ` ` ` `} ` ` ` ` ` `i++; ` ` ` `n = n / ` `10` `; ` ` ` `} ` ` ` ` ` `// Print the final position ` ` ` `System.out.print(pos); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `// Given number of the series ` ` ` `int` `N = ` `777` `; ` ` ` ` ` `// Function Call ` ` ` `findPosition(N); ` `} ` `} ` ` ` `// This code is contributed by shivanisinghss2110 ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program for the above approach ` ` ` `# Function to find the position ` `# of the number N ` `def` `findPosition(n): ` ` ` ` ` `i ` `=` `0` ` ` ` ` `# To store the position of N ` ` ` `pos ` `=` `0` ` ` ` ` `# Iterate through all digit of N ` ` ` `while` `(n > ` `0` `): ` ` ` ` ` `# If current digit is 7 ` ` ` `if` `(n ` `%` `10` `=` `=` `7` `): ` ` ` `pos ` `=` `pos ` `+` `pow` `(` `2` `, i ` `+` `1` `) ` ` ` ` ` `# If current digit is 4 ` ` ` `else` `: ` ` ` `pos ` `=` `pos ` `+` `pow` `(` `2` `, i) ` ` ` ` ` `i ` `+` `=` `1` ` ` `n ` `=` `n ` `/` `/` `10` ` ` ` ` `# Print the final position ` ` ` `print` `(pos) ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `'__main__'` `: ` ` ` ` ` `# Given number of the series ` ` ` `N ` `=` `777` ` ` ` ` `# Function Call ` ` ` `findPosition(N) ` ` ` `# This code is contributed by mohit kumar 29 ` |

*chevron_right*

*filter_none*

## C#

`// C# program for the above approach ` `using` `System; ` `class` `GFG{ ` ` ` `// Function to find the position ` `// of the number N ` `static` `void` `findPosition(` `int` `n) ` `{ ` ` ` `int` `i = 0; ` ` ` ` ` `// To store the position of N ` ` ` `int` `pos = 0; ` ` ` ` ` `// Iterate through all digit of N ` ` ` `while` `(n > 0) ` ` ` `{ ` ` ` ` ` `// If current digit is 7 ` ` ` `if` `(n % 10 == 7) ` ` ` `{ ` ` ` `pos = pos + (` `int` `)Math.Pow(2, i + 1); ` ` ` `} ` ` ` ` ` `// If current digit is 4 ` ` ` `else` ` ` `{ ` ` ` `pos = pos + (` `int` `)Math.Pow(2, i); ` ` ` `} ` ` ` ` ` `i++; ` ` ` `n = n / 10; ` ` ` `} ` ` ` ` ` `// Print the final position ` ` ` `Console.Write(pos); ` `} ` ` ` `// Driver Code ` `public` `static` `void` `Main() ` `{ ` ` ` `// Given number of the series ` ` ` `int` `N = 777; ` ` ` ` ` `// Function Call ` ` ` `findPosition(N); ` `} ` `} ` ` ` `// This code is contributed by Code_Mech ` |

*chevron_right*

*filter_none*

**Output:**

14

**Time Complexity:** *O(log _{10}N)*

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Nth term where K+1th term is product of Kth term with difference of max and min digit of Kth term
- Find n-th element in a series with only 2 digits (4 and 7) allowed
- Find n-th element in a series with only 2 digits (4 and 7) allowed | Set 2 (log(n) method)
- Numbers of Length N having digits A and B and whose sum of digits contain only digits A and B
- Nth term of a sequence formed by sum of current term with product of its largest and smallest digit
- Find Nth term of the series where each term differs by 6 and 2 alternately
- Find the Nth term of the series where each term f[i] = f[i - 1] - f[i - 2]
- Nth Term of a Fibonacci Series of Primes formed by concatenating pairs of Primes in a given range
- Find the count of numbers that can be formed using digits 3, 4 only and having length at max N.
- Sum of series till N-th term whose i-th term is i^k - (i-1)^k
- Sum of the digits of square of the given number which has only 1's as its digits
- Number formed by deleting digits such that sum of the digits becomes even and the number odd
- Count of numbers between range having only non-zero digits whose sum of digits is N and number is divisible by M
- Count of numbers upto N digits formed using digits 0 to K-1 without any adjacent 0s
- Program to find Nth term in the given Series
- Find the nth term of the given series
- Maximum number formed from array with K number of adjacent swaps allowed
- Find smallest number with given number of digits and sum of digits under given constraints
- Find position of the only set bit
- Count sequences of length K having each term divisible by its preceding term

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.