Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать
из одной из куч один камень или уменьшить количество камней в куче в два раза (если
количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается).
Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать
(6, 9). За один ход из позиции (6, 9) можно получить любую из четырёх позиций: (5, 9), (3, 9),
(6, 8), (6, 5).
Игра завершается в тот момент, когда суммарное количество камней в кучах становится
не более 20. Победителем считается игрок, сделавший последний ход, то есть первым
получивший позицию, в которой в кучах будет 20 или меньше камней.
В начальный момент в первой куче было 10 камней, во второй куче — S камней, S > 10.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при
любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он
должен сделать в любой ситуации, которая ему может встретиться при различной игре
противника. В описание выигрышной стратегии не следует включать ходы играющего по
ней игрока, которые не являются для него безусловно выигрышными, т.е не гарантирующие
выигрыш независимо от игры противника.
Найдите максимальное(!) значение S, при котором одновременно выполняются два
условия:
— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом
при любой игре Пети;
— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
1. Подумать над алгоритмом
2. Вот сам алгоритм:
а. спросить у пользователя значения
б. расчитать ответ
в. выдать ответ на экран
3. Написать код в паскале
4. Исправить ошибки компиляции
5. Протестировать, вводить разные числа
6. обнаружила, что если вводить числа наугад ответ получается отрицательным иногда
7. Вставить код проверки введенных пользователем значений
8. убрать ошибки компиляции
9. протестировать
10. готово
А вот и сама программа:
program aerobus;
uses crt;
const TotalPlace = 160;
var businessPlaces, economyPlaces:integer;
businessPrice, economyPrice:real;
totalCharge:real;
a,b:integer;
correctInput:boolean;
begin
clrscr;
businessPlaces:=TotalPlace div 4;
economyPlaces:= TotalPlace - businessPlaces;
writeln('business places count: ', businessPlaces);
writeln('economy places count: ', economyPlaces);
correctInput:=false;
while not correctInput do
begin
write('Please Input Business Class Ticket Price: ');
readln(businessPrice);
if(businessPrice>0) then
begin
correctInput:=true;
end
else
begin
writeln('The price should be a positive number, please try again');
end;
end;
economyPrice:=businessPrice/2;
writeln('Economy Ticket Price is: ', economyPrice:0:2);
correctInput:=false;
while not correctInput do
begin
write('How many business tickets are left?: ');
readln(a);
if(a>=0) and (a<=businessPlaces)then correctInput:=true;
if(a<0) then
begin
writeln('Please input a positive number or 0, please try again');
end;
if(a>businessPlaces) then
begin
writeln('Please input a number which is less or equal to the tolal business place count, please try again');
end;
end;
correctInput:=false;
while not correctInput do
begin
write('How many economy tickets are left?: ');
readln(b);
if(b>=0) and (b<=economyPlaces)then correctInput:=true;
if(b<0) then
begin
writeln('Please input a positive number or 0, please try again');
end;
if(b>economyPlaces) then
begin
writeln('Please input a number which is less or equal to the tolal economy place count, please try again');
end;
end;
totalCharge:=(businessPlaces-a)*businessPrice;
totalCharge:=totalCharge+(economyPlaces-b)*economyPrice;
writeln('The total charge is:', totalCharge:0:2);
writeln;
writeln('Press enter to exit');
readln;
end.
import java.lang.*;
class {
public static void main(String[] args){
Scanner sc = new Scanner(System.in); // то для ввода
int ecoPrice = 0;
int businesPrice = 2 * ecoPrice;
int placeeco;
int placeBus;
System.out.print("Enter scolyco ostalos eco mest): ");
placeeco = 120 - sc.nextInt();
System.out.print("enter ecoprice: ");
ecoPrice = sc.nextInt();
System.out.print("Enter scolyco ostalos bus mest): ");
placeBus = 40 - sc.nextInt();
System.out.print("enter busprice");
businesPrice = sc.nextInt();
int plus = placeeco * ecoPrice + businesPrice * placeBus;
System.out.print("Dohod: " + plus);
}
}
поставь лучший ответ