Задача с регионального этапа прошлого года)
На паскале решение выглядит так:
var
s,a1,a2,a3,a4:int64;
i,o:text;
function min(x,y:int64):int64;
begin
if x>y then
min:=y else
min:=x;
end;
begin
assign(i,'pobeda.in');
reset(i);
read(i,a1,a2,a3,a4);
close(i);
s:=min(a1,a2)+min(a3,a4);
assign(o,'pobeda.out');
rewrite(o);
writeln(o,trunc(sqrt(s)));
close(o);
end.
Если ты пишешь на другом языке программирования, то могу коротко рассказать суть решения. Большой квадрат со стороной x получается из x^2 маленьких квадратом, которые состоят из двух прямоугольных треугольников. Такие квадраты можно составить из треугольников a1 и a2 или a3 и a4. Поэтому берём минимальное значение из a1 и a2 и минимальное из a3 и a4. Суммируем эти значения, берём корень и округляем в меньшую степень.
Обувщик или сапожник, стоматолог, шофёр или водитель
Для начала посчитаем сколько символов в твоем предложении (пробелы, знаки препинания, буквы). Их там 28 [Терпение и труд все перетрут]. Как мы знаем, в кодировке Unicode - 1 символ занимает 16 бит памяти. Умножим 28 символов на 16 и получим 448 бит [28*16=448 бит]. Теперь, если это требуется, переведем биты в байты и килобайты. 1 байт памяти занимает 8 бит. Делим 448 бит на 8 получаем 56 [448/8=56 байт]. 1 кбайт памяти, в свою очередь, занимает 1024 байт памяти. Делим 56 байт на 1024 <em>(советую использовать калькулятор) </em>получаем 0,05 кбайт [56/1024=<span>0,0546875</span>].
В ответе пишем одно из получившихся значений, <u>которое требуется написать</u> [448 бит или 56 байт или 0,05 кбайт]
Var z1,z2:byte;
begin
for z1:=1 to 9 do begin
for z2:=0 to 9-z1 do begin
writeln(z1,z2,z1+z2);
end;
end;
end.
По просьбе автора задачи - вариант с 3 циклами
var x,y,z:byte;
begin
for x:=1 to 9 do begin
for y:=0 to 9 do begin
for z:=0 to 9 do begin
if (x+y=z) then writeln(x,y,z);
end;
end;
end;
end.