Dados tres enteros positivos X, Y y P. Aquí P denota el número de vueltas. Siempre que el giro es impar, X se multiplica por 2 y en cada giro par, Y se multiplica por 2. La tarea es encontrar el valor de max(X, Y) ÷ min(X, Y) después de los P giros completos.
Ejemplos:
Input : X = 1, Y = 2, P = 1 Output : 1 As turn is odd, X is multiplied by 2 and becomes 2. Now, X is 2 and Y is also 2. Therefore, 2 ÷ 2 is 1. Input : X = 3, Y = 7, p = 2 Output : 2 Here we have 2 turns. In the 1st turn which is odd X is multiplied by 2. And the values are 6 and 7. In the next turn which is even Y is multiplied by 2. Now the final values are 6 and 14. Therefore, 14 ÷ 6 is 2.
Vamos a jugar el juego anterior durante 8 turnos:
| i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |------|---|----|----|----|----|----|----|-----|-----| | X(i) | X | 2X | 2X | 4X | 4X | 8X | 8X | 16X | 16X | | Y(i) | Y | Y | 2Y | 2Y | 4Y | 4Y | 8Y | 8Y | 16Y |
Aquí podemos detectar fácilmente un patrón:
if i is even, then X(i) = z * X and Y(i) = z * Y. if i is odd, then X(i) = 2*z * X and Y(i) = z * Y.
Aquí z es en realidad la potencia de 2. Entonces, simplemente podemos decir:
If P is even output will be max(X, Y) ÷ min(X, Y) else output will be max(2*X, Y) ÷ min(2*X, Y).
A continuación se muestra la implementación:
C++
// CPP program to find max(X, Y) / min(X, Y) // after P turns #include <bits/stdc++.h> using namespace std; int findValue(int X, int Y, int P) { if (P % 2 == 0) return (max(X, Y) / min(X, Y)); else return (max(2 * X, Y) / min(2 * X, Y)); } // Driver code int main() { // 1st test case int X = 1, Y = 2, P = 1; cout << findValue(X, Y, P) << endl; // 2nd test case X = 3, Y = 7, P = 2; cout << findValue(X, Y, P) << endl; }
C
// C program to find max(X, Y) / min(X, Y) // after P turns #include <stdio.h> int findValue(int X, int Y, int P) { int Max = X,Min = X; if(Max < Y) Max = Y; if(Min > Y) Min = Y; int Max2 = 2*X,Min2 = 2*X; if(Max2 < Y) Max2 = Y; if(Min2 > Y) Min2 = Y ; if (P % 2 == 0) return (Max / Min); else return (Max2 / Min2); } // Driver code int main() { // 1st test case int X = 1, Y = 2, P = 1; printf("%d\n",findValue(X, Y, P)); // 2nd test case X = 3, Y = 7, P = 2; printf("%d\n",findValue(X, Y, P)); } // This code is contributed by kothvvsaakash.
Java
// Java program to find max(X, Y) / min(X, Y) // after P turns import java.util.*; class Even_odd{ public static int findValue(int X, int Y, int P) { if (P % 2 == 0) return (Math.max(X, Y) / Math.min(X, Y)); else return (Math.max(2 * X, Y) / Math.min(2 * X, Y)); } public static void main(String[] args) { // 1st test case int X = 1, Y = 2, P = 1; System.out.println(findValue(X, Y, P)); // 2nd test case X = 3; Y = 7; P = 2; System.out.print(findValue(X, Y, P)); } } //This code is contributed by rishabh_jain
Python3
# Python3 code to find max(X, Y) / min(X, Y) # after P turns def findValue( X , Y , P ): if P % 2 == 0: return int(max(X, Y) / min(X, Y)) else: return int(max(2 * X, Y) / min(2 * X, Y)) # Driver code # 1st test case X = 1 Y = 2 P = 1 print(findValue(X, Y, P)) # 2nd test case X = 3 Y = 7 P = 2 print((findValue(X, Y, P))) # This code is contributed by "Sharad_Bhardwaj".
C#
// C# program to find max(X, Y) / min(X, Y) // after P turns using System; class GFG { public static int findValue(int X, int Y, int P) { if (P % 2 == 0) return (Math.Max(X, Y) / Math.Min(X, Y)); else return (Math.Max(2 * X, Y) / Math.Min(2 * X, Y)); } // Driver code public static void Main() { // 1st test case int X = 1, Y = 2, P = 1; Console.WriteLine(findValue(X, Y, P)); // 2nd test case X = 3; Y = 7; P = 2; Console.WriteLine(findValue(X, Y, P)); } } //This code is contributed by vt_m
PHP
<?php // PHP program to find // max(X, Y) / min(X, Y) // after P turns function findValue($X, $Y, $P) { if ($P % 2 == 0) return (int)(max($X, $Y) / min($X, $Y)); else return (int)(max(2 * $X, $Y) / min(2 * $X, $Y)); } // Driver code // 1st test case $X = 1; $Y = 2; $P = 1; echo findValue($X, $Y, $P), "\n"; // 2nd test case $X = 3; $Y = 7; $P = 2; echo findValue($X, $Y, $P), "\n"; // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to find max(X, Y) / min(X, Y) // after P turns function findValue(X, Y, P) { if (P % 2 == 0) return parseInt((Math.max(X, Y) / Math.min(X, Y)), 10); else return parseInt((Math.max(2 * X, Y) / Math.min(2 * X, Y)), 10); } // 1st test case let X = 1, Y = 2, P = 1; document.write(findValue(X, Y, P) + "</br>"); // 2nd test case X = 3, Y = 7, P = 2; document.write(findValue(X, Y, P)); // This code is contributed by divyeshrabadiya07. </script>
Producción:
1 2
Complejidad de tiempo: O(1)
Publicación traducida automáticamente
Artículo escrito por Sagar Shukla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA