Всем привет) Вот задачка...не могу решить и все((( Надеюсь на вашу помощь... просьба писать сразу в виде программы))
Двое играют в такую игру: первый записывает натуральное число от 2 до 9;второй умножает его на произвольное натуральное число от 2 до 9;затем первый умножает результат на любое из чисел от 2 до 9 и так далее. Выигрывает тот, кто первым получит результат равный или больший натурального числа N (N<2000000000). Кто выигрывает при правильной игре - начинающий или его соперник?
Программа должна:
Запросить N ; найти и сообщить кто выигрывает; если выигрывает первый то сообщить все его возможные первые ходы, ведущие к выигрышу.
Пример 1: Исходные данные: 16 Ответ: Выигрывает второй.
Пример 2: Исходные данные: 28 Ответ: Выигрывает первый. Выигрывающий ход: 2 или 3.
ну кто нибудь помогите!!!!!!
да не поможет никто
ну не принято у нас за людей полностью все делать только потому, что они в последний момент вспомнили о задаче.
если бы ты хотя бы начал... выложил свои идеи...
По идее каждый должен руководствоваться правилом - надо выбрать такое максимально возможное число, после умножения на которое, соперник в любом случает не сможет победить. Пример: при N=28, ход = 2 или 3, т.к. 3 * любое [2..9] будет меньше 28, а при ходе = 4 соперник сможет получить больше.
Примерно вот так:
var b,t,h,n:longint;
begin
n:=28; b:=1; t:=1;
repeat
b:=3-b; h:=2;
while (t*(h+1)*9<n) and (h<9) do inc(h);
t:=t*h;
until t*9>=n;
writeln (b,' wins');
if b=1 then
for h:=2 to 9 do if h*9<n then write (h,' ');
end.