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

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 ` `

Output:

```13
```

This article is contributed by Devanshu Agarwal. 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.