var A,B,C,D,N,M,K,S: integer;
begin
readln(A,B,C,D,N);
M:=N div A;
if M*A<N then M:=M+1;
K:=N div C;
if K*C<N then K:=K+1;
S:=M*B;
if M*B<K*D then writeln('FIRST')
else
if M*B>K*D then
begin
S:=K*D;
writeln('SECOND');
end
else writeln('ANY');
writeln(S);
end.
Чтобы перевести число в двоичную систему (в таком виде каждый его разряд будет отображать состояние соответствующего бита), нужно делить его на основание системы (то есть, делить на два).
Но, деление нужно делать с остатком (т.е. делим нацело и пишем результат и целый остаток от деления- либо ноль, либо единица):
42 : 2 = 21 (остаток 0)
21 : 2 = 10 (остаток 1)
10 : 2 = 5 (остаток 0)
5 : 2 = 2 (остаток 1)
2 : 2 = 1 (остаток 0)
1 : 2 = 0 (остаток 1)
Всё, деление окончено, осталось только составить из остатков (начиная с последнего) двоичное число. Вот что мы получим в итоге:
42₁₀ = 101010₂
Можно само деление делать уголком (смотри приложенную картинку). Там, красным обозначены остатки от деления и последний результат (единица), с которой и начинают составлять двоичное число.
begin
var a, b, c, d, n: integer;
Readln(a, b, c, d, n);
var (ka, kc) := (Ceil(n/a), Ceil(n/c));
var (sb, sd) := (b * ka, d * kc);
if sb < sd then Writeln('FIRST', NewLine, sb)
else
if sd < sb then Writeln('SECOND', NewLine, sd)
else Writeln('ANY', NewLine, sb)
end.
10 11 12 15 22SECOND30