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

Ограничение времени 1 секунда Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
На столе лежит кучка из N камней. Двое по очереди делают ходы. За один ход игрок должен разделить каждую кучку, в которой больше одного камня, на две кучки. Проигрывает игрок, после хода которого во всех кучках будет по одному камню. Может ли первый игрок играть так, чтобы выиграть вне зависимости от ходов второго игрока. Каким должен быть его первый ход в таком случае?

Формат ввода
Вводится одно натуральное число N (2 ≤ N ≤ 1000).

Формат вывода
Выведите одно число - количество камней, которые должен отложить в меньшую кучку на первом ходу первый игрок, чтобы выиграть. Если выиграть первый игрок не может, выведите число -1.

Пример 1
Ввод Вывод
3
1
Пример 2
Ввод Вывод
2
-1

👇
Открыть все ответы
Ответ:
roker62
roker62
22.03.2021

1) 2*6^0 + 0*6^1 + 1*6^2 + 5*6^3

2) 3 единицы

3) 24D

4) 6

5) 2 раза

Объяснение:

2) 37_{10} = 100101_{2}

3) Переводим число 589_{10} в 16-ичную систему счисления, для этого делим его на 16 и запоминаем остаток. Затем результат деления также делим на 16 и запоминаем остаток. Повторяем эти действия до тех пор, пока частное не будет равно 0:

589 : 16 = 36, остаток 13

36 : 16 = 2, остаток 4

2 : 16 = 0, остаток 2

Затем записываем остатки от деления в обратном порядке: 2 4 13

Заменяем числа больше 9 на буквы

(10 - A; 11 - B; 12 - C; 13 - D; 14 - E; 15 - F)

Результат: 24D_{16}

4)

234_{x} = 94_{10}\\4 * x^0 + 3 * x^1 + 2 * x^2 = 94\\4 + 3x + 2x^2 = 94\\2x^2 + 3x - 90 = 0\\x = 6

5) Посчитаем от 1 до 10 в  6-ичной системе счисления:

1 2 3 4 5 10 11 12 13 14

4,5(39 оценок)
Ответ:
Matka2002
Matka2002
22.03.2021
Выполняя алгоритм, получаем следующий результат (15 итераций)

1. 0..65534 -> 32767
2. 0..32766 -> 16383
3. 0..16382 -> 8191
4. 0..8190  -> 4095
5. 0..4094  -> 2047
6. 2048..4094 -> 3071
7. 2048..3070 -> 2559
8. 2560..3070 -> 2815
9. 2816..3070 -> 2943
10. 2944..3070 -> 3007
11. 2944..3006 -> 2975
12. 2976..3006 -> 2991
13. 2992..3006 -> 2999
14. 3000..3006 -> 3003
15. 3000..3002 -> 3001

Если лень перебирать вручную, можно воспользоваться программой

var k,l,r,x,f:integer;
begin
f := 3001;
l := 0;
r := 65534;
x := (l + r) div 2;
k := 1;
while (x <> f) and (l < r) do
  begin
  writeln(k,' ',l,' ',r,' ',x);
  k := k + 1;
  if f < x then r := x - 1
    else l := x + 1;
  x := (l + r) div 2
  end;
writeln(k,' ',l,' ',r,' ',x);
end.
4,8(9 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ