Попытка поиска выигрышной стратегии может быть сделана при помощи метода, получившего название "бэкрекинг" (backtracking - обратное прослеживание).
Рассматриваем финальную позицию для второго студента. У него должно оставаться от 1 до 4 карточек, чтобы он мог их все забрать и не оставить карточек первому студенту. Следовательно, у первого студента должно быть ровно 5 карточек. Забрав от 1 до 4 карточек, он оставит второму студенту как раз требуемое количество карточек.
Чтобы у первого студента осталось 5 карточек, второй студент должен иметь от 6 до 9 карточек, т.е. первый студент для этого должен делать выбор из 10 карточек.
И так далее. Выигрышная стратегия второго студента состоит в том, чтобы предоставлять первому студенту количество карточек, кратное 5.
Но исходное количество карточек равно 20; это число кратно 5, следовательно второй студент всегда выигрывает, применяя описанную стратегию (она же - алгоритм).
Var n,m:interer;
Begin
write('Введите день') ; Readln(d);
write('Введите месяц'); Readln(m);
if (m = 2) and (d=28) then <span> writeln('День - 1',' Месяц - 3');</span><span> if (m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12) then</span><span> if (d>1) and (d<31) then begin</span><span> d:=d+1;</span><span> writeln('День -',d,'Месяц- ',m); end</span><span> else if d=31 then begin m:=m+1; wrteln('День - 1','Месяц- ',m); end;</span><span> if (m=2) or (m=4) or (m=6) or (m=9) or (m=11) they</span><span> if d<30 then begin d:=d+1; writeln('День -',d,'Месяц- ',m); end</span><span> else d=30 then begin m:=m+1; wrteln('День - 1','Месяц- ',m); end;
</span><span>readln;
end.
НЕДОРАБОТАНА</span>
Program upr;
uses crt,GraphABC;
var pic:Picture; R,c:integer; b:string;
begin
SetWindOwSize(640,450);
write('Введите расстояние от предмета до зеркала(1-100):');
Readln(R);
pic:=Picture.Create('raskraska-shenok18.jpg');
pic.load('raskraska-shenok18.jpg');
Pic.Draw(320+R,100,200,290);
Pic.Draw(320-R,100,-200,290);
Setpencolor(clgreen);
Setpenwidth(5);
lINE(320,50,320,400);
LINE(50,400,590,400);
Setpenwidth (2);
Line(trunc(120+r/2),100,TRUNC(520-r/2),100);
END.
Const nx=20;var i,n,k,z,v,err,max:integer; t,s:string;a:array[1..nx] of integer;beginWrite('Введите число n');Read(n);Write('Введите числа');for i:=1 to n doRead(a[i]);foreach k in a do beginstr(k,s);t:= copy(s,1,1);val(t,v,err);if max < v then max:=v;end;writeln('max =',max);end.
Ответ:
Вот, вроде работает:
Объяснение:
a = int(input("Сколько дней заниматься математикой?"))
b = int(input("Сколько дней заниматься информатикой?"))
c = int(input("Сколько чашек чая выпивать, когда занимаешься математикой?"))
d = int(input("Сколько чашек чая выпивать, когда занимаешься информатикой?"))
n = int(input("Сколько недель будешь заниматься?"))
chashka = 0
n = n*7
while n > 0:
chashka = chashka + c * a
n = n - a
chashka = chashka + d * b
n = n - b
print(chashka, "чашек чая")