https://coderun.yandex.ru/problem/snowballs/description Сложная

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

// Вычисление значения Гранди для одной кучки
fun grundy(n: Int): Int {
    return n % 3 // Значение Гранди зависит от остатка при делении на 3
}

// Определение победителя для заданных размеров кучек
fun solve(a1: Int, a2: Int, a3: Int): Int {
    val g = grundy(a1) xor grundy(a2) xor grundy(a3) // XOR значений Гранди всех кучек
    return if (g != 0) 1 else 0 // Первый игрок выигрывает, если результат XOR не равен 0
}

fun main(args: Array<String>) {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    
    val t = reader.readLine().toInt() // Чтение количества запросов
    
    repeat(t) { // Обработка каждого запроса
        val (a1, a2, a3) = reader.readLine().split(" ").map { it.toInt() } // Чтение размеров кучек
        val result = solve(a1, a2, a3) // Определение победителя
        writer.write(result.toString()) // Вывод результата
        writer.newLine()
    }
    
    reader.close()
    writer.close()
}