Паша и Вова играют в следующую игру. Им дается число n. Они ходят по очереди и Паша ходит первым. На своем ходу игрок выбирает число d так, что d — натуральное число от 1 до n–1 и d — делитель n (исключение – число 1, для него можно выбрать d = 1 и выиграть). После этого d вычитается из n. Игрок, который не может сделать ход, проигрывает. Определите, для каких натуральных n Петя гарантированно выигрывает при оптимальной игре вне зависимости от игры Вовы? ответ обосновать.
Delphi у меня 7-й версии. будет чем проект открыть? Код модуля в файле Unit1.pas.
P.S. Что-то zip не грузится, код - ниже:
procedure TForm1.Button1Click(Sender: TObject);
var
N1, N2, N3: Real;
begin
//Проверок на введённе значения для простоты не делаю
N1:=StrToFloat(Edit1.Text);
N2:=StrToFloat(Edit2.Text);
N3:=StrToFloat(Edit3.Text);
if N1<0 then N1:=N1*N1*N1*N1 else N1:=N1*N1;
if N2<0 then N2:=N2*N2*N2*N2 else N2:=N2*N2;
if N3<0 then N3:=N3*N3*N3*N3 else N3:=N3*N3;
Edit4.Text:=FloatToStr(N1);
Edit5.Text:=FloatToStr(N2);
Edit6.Text:=FloatToStr(N3);
end;
m,n,p:real;
k:integer;
begin
Write('Введите через пробел начало и конец интервала: ');
Read(m,n);
p:=1;
k:=Trunc(m);
if (k mod 2)=0 then Inc(k); { Первое нечетное }
n:=Int(n); { целочисленный конец интервала }
while k<=n do
begin p:=p*k; k:=k+2 end;
Writeln('Произведение нечетных на интервале: ',p)
end.
Тестовое решение:
Введите через пробел начало и конец интервала: -3.8 8.2
Произведение нечетных на интервале: 315
var
m,n,i,j:integer;
p:real;
begin
Write('Введите через пробел целочисленные границы интервала: ');
Read(m,n);
for i:=m to n do
begin
p:=1;
if i=0 then Writeln('2^0=1')
else
if i<0 then
begin for j:=-1 downto i do p:=p/2; Writeln('2^(',i,')=',p) end
else
begin for j:=1 to i do p:=p*2; Writeln('2^',i,'=',p) end
end
end.
Тестовое решение:
Введите через пробел целочисленные границы интервала: -5 10
2^(-5)=0.03125
2^(-4)=0.0625
2^(-3)=0.125
2^(-2)=0.25
2^(-1)=0.5
2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256
2^9=512
2^10=1024