program balet;
uses
crt;
var
k, n, pc: integer;
var
pd: real;
begin
readln(n);
readln(k);
pd := (n - 3 * k) / 2;
pc := trunc(pd);
if (pd > pc) then
pc := pc + 1 ;
writeln(pc);
readln;
end.
Пояснения:
pc - целое число принятых
pd - дробное число принятых
Так как может возникнуть ситуация, что ровно треть мальчиков от всех учеников сделать не получиться, то используем приём со сравнением числа с дробной частью и без дробной части в числе. Если дробная часть есть, то прибавляем еще одного принятого, чтобы было чуть больше трети от всех.
Пример:
n=59
k=10
pd=14,5
pc=trunc(14,5)=14
{функция trunc полностью отбрасывает дробную часть (не округляет!)}
pd>pc?
Да!
Значит
pc=14+1=15
Считаем.
Если бы мы не добавили к pc единицу, то получилось бы:
А это немного не треть...
А так как мы добавили единицу, то получилось:
То что нам надо!
a | s | k
5,000000 | 0,000000 | 0,000000
9,000000 | 5,000000 | 1,000000
13,000000 | 14,000000 | 2,000000
17,000000 | 27,000000 | 3,000000
21,000000 | 44,000000 | 4,000000
25,000000 | 65,000000 | 5,000000
29,000000 | 90,000000 | 6,000000
33,000000 | 119,000000 | 7,000000
37,000000 | 152,000000 | 8,000000
41,000000 | 189,000000 | 9,000000
45,000000 | 230,000000 | 10,000000
49,000000 | 275,000000 | 11,000000
53,000000 | 324,000000 | 12,000000
K = 12.0