Posición de n entre los números formados por 2, 3, 5 y 7

Considere una serie de números compuesta de solo dígitos 2, 3, 5, 7 (primos). Los primeros números de la serie son 2, 3, 5, 7, 22, 23, 25, 27, 32, 33, 35, 37, 52, 53, 55, 57 .. etc. Dado un número construido por 2, 3 , 5, 7 dígitos solamente, necesitamos encontrar la posición de este número en esta serie.
Ejemplos: 
 

Input : 22
Output : 5
22 is 5th number in series 2, 3, 5, 7, 22, ...

Input : 777
Output : 84

Es el reverso del siguiente artículo:
encontrar el número n-ésimo formado solo por dígitos primos (2, 3, 5 y 7)
 

                                                    ""
             /                           |                            |                            \
          1(2)                          2(3)                         3(5)                          4(7)
   /    |     |   \           /   |      |  \             /     |       |    \           /     |     |     \ 
5(22) 6(23) 7(25) 8(27)    9(32)10(33)11(35)12(37)    13(52) 14(53) 15(55) 16(57)    17(72) 18(73) 19(75) 20(77)
/||\  /||\ /||\ /||\        /||\  /||\   /||\  /||\     /||\   /||\   /||\   /||\      /||\   /||\   /||\   /||\

Si el número es 2 entonces está en la posición pos*2+1 
Si el número es 3 entonces está en la posición pos*2+2 
Si el número es 5 entonces está en la posición pos*2+3 
Si el número es 7 entonces está en la posición pos*2+4 
Aquí pos es un número entero mayor o igual a 0.
 

C++

#include <algorithm>
#include <iostream>
using namespace std;
 
int findpos(string n)
{
    int pos = 0;
    for (int i = 0; n[i] != '\0'; i++) {
        switch (n[i]) {
 
        // If number is 2 then it is
        // on the position pos*2+1
        case '2':
            pos = pos * 4 + 1;
            break;
 
        // If number is 3 then it is
        // on the position pos*2+2
        case '3':
            pos = pos * 4 + 2;
            break;
 
        // If number is 5 then it is
        // on the position pos*2+3
        case '5':
            pos = pos * 4 + 3;
            break;
 
        // If number is 7 then it is
        // on the position pos*2+4
        case '7':
            pos = pos * 4 + 4;
            break;
        }
    }
    return pos;
}
 
// Driver code
int main()
{
    string n = "777";
    cout << findpos(n);
}

Java

// Java Program position of n among
// the numbers made of 2, 3, 5 & 7
class GFG
{
static int findpos(String n)
{
    int pos = 0;
    for (int i = 0; i < n.length(); i++)
    {
        switch (n.charAt(i))
        {
 
        // If number is 2 then it is
        // on the position pos*2+1
        case '2':
            pos = pos * 4 + 1;
            break;
 
        // If number is 3 then it is
        // on the position pos*2+2
        case '3':
            pos = pos * 4 + 2;
            break;
 
        // If number is 5 then it is
        // on the position pos*2+3
        case '5':
            pos = pos * 4 + 3;
            break;
 
        // If number is 7 then it is
        // on the position pos*2+4
        case '7':
            pos = pos * 4 + 4;
            break;
        }
    }
    return pos;
}
 
// Driver code
public static void main(String args[])
{
    String n = "777";
    System.out.println( findpos(n));
}
}
 
// This code is contributed
// by Arnab Kundu

Python 3

def findpos(n):
    pos = 0
    for i in n:
         
        # If number is 2 then it is
        # on the position pos*2+1
        if i == '2':
            pos = pos * 4 + 1
             
        # If number is 3 then it is
        # on the position pos*2+2
        elif i == '3':
            pos = pos * 4 + 2
             
        # If number is 5 then it is
        # on the position pos*2+3
        elif i == '5':
            pos = pos * 4 + 3
             
        # If number is 7 then it is
        # on the position pos*2+4
        elif i == '7':
            pos = pos * 4 + 4
         
    return pos
 
# Driver code
n = "777"
print (findpos(n))
 
# This code is contributed by vishal.

C#

// C# Program position of n among
// the numbers made of 2, 3, 5 & 7
using System;
     
class GFG
{
     
static int findpos(String n)
{
    int pos = 0;
    for (int i = 0; i < n.Length; i++)
    {
        switch (n[i])
        {
 
        // If number is 2 then it is
        // on the position pos*2+1
        case '2':
            pos = pos * 4 + 1;
            break;
 
        // If number is 3 then it is
        // on the position pos*2+2
        case '3':
            pos = pos * 4 + 2;
            break;
 
        // If number is 5 then it is
        // on the position pos*2+3
        case '5':
            pos = pos * 4 + 3;
            break;
 
        // If number is 7 then it is
        // on the position pos*2+4
        case '7':
            pos = pos * 4 + 4;
            break;
        }
    }
    return pos;
}
 
// Driver code
public static void Main(String[] args)
{
    String n = "777";
    Console.WriteLine( findpos(n));
}
}
 
// This code contributed by Rajput-Ji

PHP

<?php
// PHP Program position of n among
// the numbers made of 2, 3, 5 & 7
 
function findpos($n)
{
    $pos = 0;
    for ($i = 0; isset($n[$i]) != NULL; $i++)
    {
        switch ($n[$i])
        {
 
            // If number is 2 then it is
            // on the position pos*2+1
            case '2':
                $pos = $pos * 4 + 1;
                break;
     
            // If number is 3 then it is
            // on the position pos*2+2
            case '3':
                $pos = $pos * 4 + 2;
                break;
     
            // If number is 5 then it is
            // on the position pos*2+3
            case '5':
                $pos = $pos * 4 + 3;
                break;
     
            // If number is 7 then it is
            // on the position pos*2+4
            case '7':
                $pos = $pos * 4 + 4;
                break;
        }
    }
    return $pos;
}
 
// Driver Code
$n = "777";
echo findpos($n);
 
// This code is contributed by nitin mittal.
?>

Javascript

<script>
 
// Javascript Program position of n among
// the numbers made of 2, 3, 5 & 7
 
function findpos(n)
{
    var pos = 0;
    for (i = 0; i < n.length; i++)
    {
        switch (n.charAt(i))
        {
 
        // If number is 2 then it is
        // on the position pos*2+1
        case '2':
            pos = pos * 4 + 1;
            break;
 
        // If number is 3 then it is
        // on the position pos*2+2
        case '3':
            pos = pos * 4 + 2;
            break;
 
        // If number is 5 then it is
        // on the position pos*2+3
        case '5':
            pos = pos * 4 + 3;
            break;
 
        // If number is 7 then it is
        // on the position pos*2+4
        case '7':
            pos = pos * 4 + 4;
            break;
        }
    }
    return pos;
}
 
// Driver code
var n = "777";
document.write( findpos(n));
 
 
// This code is contributed by Amit Katiyar
 
</script>
Producción: 

84

 

Publicación traducida automáticamente

Artículo escrito por DevanshuAgarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *