В данном случае достаточно просто идти с конца. Скажем, если есть число 99, очевидно, последней командой было "прибавить 1". Далее, 98 - может быть получено умножением на 2, и следует выбирать именно эту команду - программа точно не будет превосходить по размеру вариант, где последней операцией является сложение. Например, 98 - 49 - 48 короче, чем 98 - 97 - 96 - 48
Var a,b,c,max,i:integer; ca,cb,cc,smax:string; begin max:=-1; readln(ca); readln(cb); readln(cc); for i:=1 to 3 do begin if strtoint(ca[i])>max then begin smax:=ca; max:=strtoint(ca[i]); end; if strtoint(ca[i])>max then begin smax:=cb; max:=strtoint(ca[i]); end; if strtoint(cc[i])>max then begin smax:=cc; max:=strtoint(ca[i]); end; end; writeln(smax); end.
Пример ввода: 123 456 908 Пример вывода: 908
//2
Var n,n1:integer; s:string; begin readln(n); n1:=n; if (n=11) or (n=12) or (n=13) or (n=14) then s:='лет' else begin n:=n mod 10; case n of 0:s:='лет'; 1:s:='год'; 2:s:='года'; 3:s:='года'; 4:s:='года'; 5:s:='лет'; 6:s:='лет'; 7:s:='лет'; 8:s:='лет'; 9:s:='лет'; end; end; writeln('Мне ',n1,' ',s); end.
5: 001 {1 - 2 - 4 - 5}
50: 0100010 {1 - 2 - 3 - 6 - 12 - 24 - 25 - 50}
99: 010000101 {1 - 2 - 3 - 6 - 12 - 24 - 48 - 49 - 98 - 99}
В данном случае достаточно просто идти с конца. Скажем, если есть число 99, очевидно, последней командой было "прибавить 1". Далее, 98 - может быть получено умножением на 2, и следует выбирать именно эту команду - программа точно не будет превосходить по размеру вариант, где последней операцией является сложение.
Например,
98 - 49 - 48 короче, чем
98 - 97 - 96 - 48
//1
Var
a,b,c,max,i:integer;
ca,cb,cc,smax:string;
begin
max:=-1;
readln(ca);
readln(cb);
readln(cc);
for i:=1 to 3 do
begin
if strtoint(ca[i])>max then
begin
smax:=ca;
max:=strtoint(ca[i]);
end;
if strtoint(ca[i])>max then
begin
smax:=cb;
max:=strtoint(ca[i]);
end;
if strtoint(cc[i])>max then
begin
smax:=cc;
max:=strtoint(ca[i]);
end;
end;
writeln(smax);
end.
Пример ввода:
123
456
908
Пример вывода:
908
//2
Var
n,n1:integer;
s:string;
begin
readln(n);
n1:=n;
if (n=11) or (n=12) or (n=13) or (n=14) then s:='лет' else
begin
n:=n mod 10;
case n of
0:s:='лет';
1:s:='год';
2:s:='года';
3:s:='года';
4:s:='года';
5:s:='лет';
6:s:='лет';
7:s:='лет';
8:s:='лет';
9:s:='лет';
end;
end;
writeln('Мне ',n1,' ',s);
end.
Пример ввода:
18
Пример вывода:
Мне 18 лет