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