В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
ifreemadozzlqu
ifreemadozzlqu
28.07.2021 10:20 •  Информатика

В битве сошлись дракон и герой. У дракона h голов и t хвостов. У героя есть волшебный меч, который одним ударом отрубает дракону ровно c отростков (голов или хвостов). Когда у дракона осталось меньше c отростков, мечом ударить невозможно.После каждого удара героя, если отрублены все головы, герой побеждает. Иначе происходит следующее: •если этим ударом герой отрубил хотя бы одну голову, у дракона вырастает a новых голов;
•если этим ударом герой отрубил хотя бы один хвост, у дракона вырастает b новых хвостов;
•после всего этого дракон один раз кусает героя одной головой.
Герой хочет победить дракона, получив как можно меньше укусов. Удастся ли ему победить, и если да, то каково минимальное количество укусов?
Формат входных данных:
В первой строке записаны пять целых чисел, разделённых пробелами:h,t,a,b,c. Все они лежат в пределах от 1 до 10 000 включительно.
Формат выходных данных:
Выведите одно целое число: минимальное количество раз, которое дракон успеет укусить героя, или−1, если герой не сможет победить дракона.
Напишите код на Python 3, или на C++.

Показать ответ
Ответ:
kurilov218
kurilov218
29.10.2022 16:25
Логическая операция ⊕ - это "исключающее ИЛИ" (xor в языках Паскаль, Бейсик и т.д.), а → операция присваивания.
Тогда a⊕b→a; a⊕b→b; a⊕b→a - это был обмен значениями a ↔ b
Теперь по этой же схеме обменяем местами b и с:
b⊕c→b; b⊕c→с; b⊕c→b.
Результат: b→a; c→b; a→c

Программа для иллюстрации:
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
  var a:=50;
  var b:=-20;
  var c:=0;
  Println('Исходные значения: a=',a,'b=',b,'c=',c);
  a:=a xor b; b:=a xor b; a:=a xor b;
  b:=b xor c; c:=b xor c; b:=b xor c;
  Println('Результат обмена: a=',a,'b=',b,'c=',c)
end.

Результат:
Исходные значения: a= 50 b= -20 c= 0
Результат обмена: a= -20 b= 0 c= 50
0,0(0 оценок)
Ответ:
Зайчик010101
Зайчик010101
05.02.2020 03:17
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016
begin
  var a:=ArrRandom(100,-10,10);
  a.Println;
  Writeln(a.Where(x->x>0).Count,' положительных, ',
    a.Where(x->x<0).Count,' отрицательных')
end.

Тестовое решение:
4 -6 0 8 2 -2 -1 -8 -6 8 -3 7 4 -7 -5 9 0 -3 -7 1 0 -4 6 3 8 -10 4 9 3 5 8 5 5 8 10 4 -8 3 8 8 -9 2 7 -8 -7 -5 2 -9 0 9 -7 7 -2 -6 7 -2 -1 7 -10 2 4 1 -1 0 10 3 -8 6 -6 2 6 7 -1 -4 -1 8 0 3 0 2 -2 2 -1 5 1 -9 -4 1 -9 1 -6 -5 3 -4 -7 1 -7 -3 -7 1
51 положительных, 42 отрицательных
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота