Even-odd turn game with two integers

13 May, 2022
Given three positive integers X, Y and P. Here P denotes the number of turns. Whenever the turn is odd X is multiplied by 2 and in every even turn Y is multiplied by 2. The task is to find the value of max(X, Y) ÷ min(X, Y) after the complete P turns.Examples :  
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.
 
Lets play the above game for 8 turns :  
| 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 |
Here we can easily spot a pattern :  
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.
Here z is actually the power of 2. So, we can simply say –  
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).
Below is the implementation :  
C++
C
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 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 codeint 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 program to find max(X, Y) / min(X, Y)// after P turnsimport 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 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 caseX = 1Y = 2P = 1print(findValue(X, Y, P)) # 2nd test caseX = 3Y = 7P = 2print((findValue(X, Y, P))) # This code is contributed by "Sharad_Bhardwaj".
// C# program to find max(X, Y) / min(X, Y)// after P turnsusing 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 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?>
<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>
Output:  
1
2
Time Complexity:O(1) 
jit_t
gfg_sal_gfg
divyeshrabadiya07
varshagumber28
kothavvsaakash
number-theory
School Programming
Searching
Searching
number-theory
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction To PYTHON
Interfaces in Java
Operator Overloading in C++
Types of Operating Systems
Polymorphism in C++
Binary Search
Maximum and minimum of an array using minimum number of comparisons
Linear Search
K'th Smallest/Largest Element in Unsorted Array | Set 1
Search an element in a sorted and rotated array