Open in App
Not now

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

• Difficulty Level : Medium
• Last Updated : 19 Jul, 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```
Recommended Practice

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.

Implementation:

## 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.

My Personal Notes arrow_drop_up
Related Articles