Помогите решить задачу 763 [закрыт]

159
12 апреля 2019, 02:50

Игра с ладьей

На бесконечной вправо и вверх шахматной доске находится ладья. Два игрока передвигают ее по очереди. За один ход разрешено сдвинуть ладью вниз или влево на произвольное (ненулевое) количество клеток так, чтобы ладья не покинула доску. Цель игры – переместить ладью в левый нижний угол, то есть клетку с координатами (1,1). Известно, что оба игрока придерживаются оптимальной стратегии. Игрок №1 ходит первым, при этом он обязан совершить хотя бы один ход. Если первый ход сделать нельзя, то определить победителя также невозможно. Требуется написать программу, которая найдет номер победившего игрока, либо определит, что этого сделать нельзя.

Входные данные Входной файл INPUT.TXT содержит два натуральных числа, разделенных пробелами: X и Y – координаты ладьи перед первым ходом (X,Y ≤ 10^9).

Выходные данные В выходной файл OUTPUT.TXT выведите одно число – номер победившего игрока. Если победителя определить невозможно, то следует вывести 0.

Ссылка на оригинал задачи: http://acmp.ru/asp/do/index.asp?main=task&id_course=1&id_section=2&id_topic=30&id_problem=174

Answer 1

Руководствуясь этим условием, можно сделать вывод, что неопределённая ситуация возникает, когда X=Y=1.

Первый игрок побеждает во всех случаях, когда X!=Y или X=1||Y=1

Второй во всех остальных.

if (x==1&&y==1){//случай 0} 
if (x!=y){//случай 1} 
if (x==1||y==1){//случай 1}
if (x==y && x!=1){//случай 2}

Хочу напомнить, что полное решение остаётся за Вами.

Answer 2
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream in("input.txt");
    ofstream out("output.txt");
    int cordX = 0, cordY = 0;
    in >> cordX >> cordY;
    if (cordX <= 1 && cordY <= 1)
    {
        out << "0" << endl;
    }
    else if (cordX == 1 || cordY == 1)
    {
        out << "1" << endl;
    }
    else if (cordX != cordY)
    {
        out << "1" << endl;
    }
    else if (cordX == cordY)
    {
        out << "2" << endl;
    }
    system("pause");
    return 0;
}
READ ALSO
Не знаю, как вывести максимальное число подпоследовательностей

Не знаю, как вывести максимальное число подпоследовательностей

Это задание: вводится последовательность целых чиселОпределить количество элементов в наиболее длинной подпоследовательности подряд идущих...

132
Зачем указателю нужно знать, какой тип хранится по адресу?

Зачем указателю нужно знать, какой тип хранится по адресу?

Собственно, зачем мы пишем тип данных перед объявлением переменной-указателя? Если указатели хранят адрес ячейки, то какое им дело, что лежит...

154
Передача данных Android Arduino по Bluetooth

Передача данных Android Arduino по Bluetooth

Мне необходимо только передать пару строк на ардуино, ничего от нее получать не надоНо проблема в том, как только я пытаюсь записать данные...

146
Вопрос новичка по Canvas в Android Studio

Вопрос новичка по Canvas в Android Studio

Ребятки, помогите, пожалуйста, новичку по Android

168