HackerRank Tower Breakers problem solution YASH PAL, 31 July 2024 In this HackerRank Tower Breakers problem solution, Two players are playing a game of Tower Breakers! Player 1 always moves first, and both players always play optimally. The rules of the game are as follows: Initially, there are N towers. Each tower is of height M. The players move in alternating turns. In each turn, a player can choose a tower of height X and reduce its height to Y, where 1 <= Y < X and Y evenly divide X. If the current player is unable to make a move, they lose the game. Given the values of N and M, determine which player will win. If the first player wins, return 1. Otherwise, return 2. Problem solution in Python. T = int(input()) for t in range(T): n, m = [int(x) for x in input().strip().split()] if m == 1: print(2) else: if n % 2 == 1: print(1) else: print(2) Problem solution in Java. import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ Scanner in = new Scanner(System.in); int T = in.nextInt(); int N, M; while (T-- > 0) { N = in.nextInt(); M = in.nextInt(); System.out.println((M != 1 && N%2 == 1)? 1 : 2 ); } } } Problem solution in C++. #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int n,x,y; cin>>n; do{ cin>>x>>y; (y==1||x%2==0)?cout<<"2"<<endl:cout<<"1"<<endl; n--; }while(n>0); /* Enter your code here. Read input from STDIN. Print output to STDOUT */ return 0; } Problem solution in C. #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> int main() { int n; scanf("%d", &n); for(int testcase = 0; testcase < n; testcase++) { int num_towers; int height; scanf("%d %d", &num_towers, &height); if(height == 1 || num_towers % 2 == 0) printf("2n"); else printf("1n"); } return 0; } algorithm coding problems