# Find position of the given number among the numbers made of 4 and 7

• Difficulty Level : Medium
• Last Updated : 08 Jun, 2022

Consider a series of numbers composed of only digits 4 and 7. The first few numbers in the series are 4, 7, 44, 47, 74, 77, 444, .. etc. Given a number constructed by 4, 7 digits only, we need to find the position of this number in this series.
Examples:

```Input : 7
Output : pos = 2

Input : 444
Output : pos = 7```

It is reverse of the following article :
Find n-th element in a series with only 2 digits (4 and 7) allowed | Set 2 (log(n) method)

```                      ""
/              \
1(4)            2(7)
/        \       /      \
3(44)    4(47)   5(74)    6(77)
/ \       / \      / \      / \```

The idea is based on the fact that all even positioned numbers have 7 as the last digit and all odd positioned numbers have 4 as the last digit.
If the number is 4 then it is the left node of the tree, then it corresponds to (pos*2)+1. Else right child node(7) corresponds to (pos*2)+2.

## C++

 `// C++ program to find position of a number``// in a series of numbers with 4 and 7 as the``// only digits.``#include ``#include ``using` `namespace` `std;` `int` `findpos(string n)``{``    ``int` `i = 0, pos = 0;``    ``while` `(n[i] != ``'\0'``) {` `        ``// check all digit position``        ``switch` `(n[i])``        ``{` `        ``// if number is left then pos*2+1``        ``case` `'4'``:``            ``pos = pos * 2 + 1;``            ``break``;` `        ``// if number is right then pos*2+2``        ``case` `'7'``:``            ``pos = pos * 2 + 2;``            ``break``;``        ``}``        ``i++;``    ``}``    ``return` `pos;``}` `// Driver code``int` `main()``{``    ``// given a number which is constructed``    ``// by 4 and 7 digit only``    ``string n = ``"774"``;``    ``cout << findpos(n);``    ``return` `0;``}`

## Java

 `// java program to find position of a number``// in a series of numbers with 4 and 7 as the``// only digits.``import` `java.util.*;` `class` `GFG {``    ` `    ``static` `int` `findpos(String n)``    ``{``        ` `        ``int` `k = ``0``, pos = ``0``, i = ``0``;``        ``while` `(k != n.length()) {` `            ``// check all digit position``            ``switch` `(n.charAt(i)) {` `            ``// if number is left then pos*2+1``            ``case` `'4'``:``                ``pos = pos * ``2` `+ ``1``;``                ``break``;` `            ``// if number is right then pos*2+2``            ``case` `'7'``:``                ``pos = pos * ``2` `+ ``2``;``                ``break``;``            ``}``            ` `            ``i++;``            ``k++;``        ``}``        ` `        ``return` `pos;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ` `        ``// given a number which is constructed``        ``// by 4 and 7 digit only``        ``String n = ``"774"``;``        ` `        ``System.out.println(findpos(n));``    ``}``}` `// This code is contributed by Sam007.`

## Python3

 `# python program to find position``# of a number in a series of``# numbers with 4 and 7 as the``# only digits.``def` `findpos(n):``    ``i ``=` `0``    ``j ``=` `len``(n)``    ``pos ``=` `0``    ``while` `(i

## C#

 `// C# program to find position of``// a number in a series of numbers``// with 4 and 7 as the only digits.``using` `System;` `class` `GFG``{``    ``static` `int` `findpos(String n)``    ``{``        ` `        ``int` `k = 0, pos = 0, i = 0;``        ``while` `(k != n.Length) {` `            ``// check all digit position``            ``switch` `(n[i]) {` `            ``// if number is left then pos*2+1``            ``case` `'4'``:``                ``pos = pos * 2 + 1;``                ``break``;` `            ``// if number is right then pos*2+2``            ``case` `'7'``:``                ``pos = pos * 2 + 2;``                ``break``;``            ``}``            ` `            ``i++;``            ``k++;``        ``}``        ` `        ``return` `pos;``    ``}` `    ``// Driver code``    ``static` `void` `Main()``    ``{``        ` `        ``// given a number which is constructed``        ``// by 4 and 7 digit only``        ``String n = ``"774"``;``        ` `        ``Console.Write(findpos(n));``    ``}``    ` `}` `// This code is contributed by Sam007`

## PHP

 ``

## Javascript

 ``

Output:

`13`

Time Complexity: O(n), where n represents the size of the given string.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

This article is contributed by Devanshu Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.