М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Решить на языке питон " шахматный ферзь ходит по диагонали, горизонтали или вертикали. даны две различные клетки шахматной доски, определите, может ли ферзь попасть с первой клетки на вторую одним ходом. программа получает на вход четыре числа от 1 до 8 каждое, номер столбца и номер строки сначала для первой клетки, потом для второй клетки. программа должна вывести yes, если из первой клетки ходом ферзя можно попасть во вторую или no в противном случае.

👇
Ответ:
anmag
anmag
29.11.2021

Проверить, что две клетки стоят в одной строке или в одно строке, просто: надо проверить, что равны соответствующие иксы или игреки. Немного сложнее проверить, что две клетки стоят на одной диагонали. Так будет, если |x1 - x2| = |y1 - y2|.


Код:

# python 3
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
in_one_row = x1 == x2
in_one_col = y1 == y2
in_one_diag = x1 - x2 == y1 - y2 or x1 - x2 == y2 - y1
if in_one_row or in_one_col or in_one_diag:
    print("YES")
else:
    print("NO")
4,6(24 оценок)
Открыть все ответы
Ответ:
NaTaShA0930
NaTaShA0930
29.11.2021
Var
a1,a2,b1,b2,c1,c2:integer;
begin
writeln('Координаты превой клетки');
writeln('введите номер столбца');
readln(a1);
writeln('введите номер строки');
readln(a2);
writeln('Координаты второй клетки');
writeln('введите номер столбца');
readln(b1);
writeln('введите номер строки');
readln(b2);
if ((a1 mod 2) <> 0) then
if ((a2 mod 2) <> 0) then c1:=0 else c1:=1;
if ((a1 mod 2) = 0) then
if ((a2 mod 2) <> 0) then c1:=1 else c1:=0;
if ((b1 mod 2) <> 0) then
if ((b2 mod 2) <> 0) then c2:=0 else c2:=1;
if ((b1 mod 2) = 0) then
if ((b2 mod 2) <> 0) then c2:=1 else c2:=0;
if c1=c2 then writeln('YES') else writeln('NO')
end.
4,4(38 оценок)
Ответ:
Fox125123
Fox125123
29.11.2021
Когда мы находим двоичную запись числа мы делим его постоянно на 2 и находим остатки. Число 2^3*2014 -2^614+45 дает при делении на 2 тот остаток что дает 45 то есть 1. Поскольку выражение слева будет точно 614 раз делиться на 2. То ясно что пока число 45 не уйдет полностью то оно будет сначало давать те остатки что дает 45. Итак выражение будет давать остатки: 45/2=22 (1) 22/2=11(0) 11/2=5(1)  5/2=2(1) 2/2=1(0) 1/2=0 (1) Итак мы делили на 2 5раз и было 4 единици. У нас выражение теперь 2^(3*2014 -6) -2^608 608 раз оно будет давать остаток 0 при делении на 2 потом останется число 2^(3*2014-614)-1. Теперь нужно применить формулу сумму геометрической прогрессии: 2^n -1 =1+2+2^2...+2^n-1 то есть понятно что оно ровно n раз будут остатки 1. То есть всего единиц будет: 3*2014-614 +4=5432 двойки проверьте расчеты
4,4(84 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ