Even-odd turn game with two integers
Last Updated :
17 Feb, 2023
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
Explanation: 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
Explanation: 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++
#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));
}
int main()
{
int X = 1, Y = 2, P = 1;
cout << findValue(X, Y, P) << endl;
X = 3, Y = 7, P = 2;
cout << findValue(X, Y, P) << endl;
}
|
C
#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);
}
int main()
{
int X = 1, Y = 2, P = 1;
printf ( "%d\n" ,findValue(X, Y, P));
X = 3, Y = 7, P = 2;
printf ( "%d\n" ,findValue(X, Y, P));
}
|
Java
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)
{
int X = 1 , Y = 2 , P = 1 ;
System.out.println(findValue(X, Y, P));
X = 3 ;
Y = 7 ;
P = 2 ;
System.out.print(findValue(X, Y, P));
}
}
|
Python3
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))
X = 1
Y = 2
P = 1
print (findValue(X, Y, P))
X = 3
Y = 7
P = 2
print ((findValue(X, Y, P)))
|
C#
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));
}
public static void Main()
{
int X = 1, Y = 2, P = 1;
Console.WriteLine(findValue(X, Y, P));
X = 3;
Y = 7;
P = 2;
Console.WriteLine(findValue(X, Y, P));
}
}
|
PHP
<?php
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 ));
}
$X = 1;
$Y = 2;
$P = 1;
echo findValue( $X , $Y , $P ), "\n" ;
$X = 3; $Y = 7; $P = 2;
echo findValue( $X , $Y , $P ), "\n" ;
?>
|
Javascript
<script>
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);
}
let X = 1, Y = 2, P = 1;
document.write(findValue(X, Y, P) + "</br>" );
X = 3, Y = 7, P = 2;
document.write(findValue(X, Y, P));
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...