с программой! Участники Международной Олимпиады по программированию, которую решили провести на
платформе отправили на проверку N файлов с кодом:
f1, f2, . . . , fN . Прежде чем показать участникам результаты проверки, жюри решило оценить вероятность списывания. Они написали программу, которая сравнивает два файла и оценивает, насколько они похожи друг на друга. Если же программа считает файлы слишком похожими, жюри
сообщает об этом участникам и больше не желает иметь с ними ничего общего.
Так как количество файлов довольно велико, проверка всех пар файлов займет слишком много
времени. С другой стороны, файлы, размеры которых слишком сильно отличаются, можно считать
не похожими. Воспользуемся этим!
Жюри решило не сравнивать пары файлов, для которых размер меньшего файла составляет
менее 90% от размера большего файла. Таким образом, программа должна сравнить только такие
пары различных файлов (fi
, fj ), i 6= j, для которых верно size(fi) 6 size(fj ) и size(fi) > 0.9·size(fj ).
Напишите программу, которая вычислит количество пар файлов, которые придется сравнить.
Формат входных данных
В первой строке записано число N (1 6 N 6 105
) — количество файлов.
Во второй строке записаны N целых чисел: size(f1), size(f2), . . . , size(fN ) (1 6 size(fi) 6 108
) —
размеры файлов.
Формат выходных данных
Выведите одно число — количество пар файлов, которые придется сравнить.
Примеры
стандартный ввод стандартный вывод
ввод
2
2 1
вывод
0
ввод
5
1 1 1 1 1
вывод
10
Формулы площадей квадрата S₁ и круга S₂ известны, что легко позволяет нам найти нужное условие.
Если нужно, чтобы случай, когда квадрат вписан в круг тоже учитывался, строгое неравенство следует заменить нестрогим.
// PascalABC.NET 3.0, сборка 1160 от 05.02.2016
begin
var s1:=ReadReal('Площадь квадрата');
var s2:=ReadReal('Площадь круга');
if pi*s1<2*s2 then Writeln('Квадрат умещается в круге')
else Writeln('Квадрат не умещается в круге')
end.
Тестовое решение:
Площадь квадрата 24.6
Площадь круга 28.4
Квадрат не умещается в круге
//Первый ввод - число, второй - система счисления
//Pascal ABC.NET v3.0
var
a,i,b,r,n,j,bug:integer;
s,se,slo,slof:string;
procedure preob(var a,b,n:integer; var se:string);
begin
repeat
b:=a mod n;
a:=a div n;
str(b,se);
s+=se;
until (a<=n-1);
end;
begin
readln(slo);
readln(n);
for j:=1 to length(slo) do
begin;
a:=ord(slo[j]);
preob(a,b,n,se);
str(a,se);
s+=se;
for i:=1 to length(s) div 2 do
begin;
se:=s[i];
s[i]:=s[length(s)-i+1];
s[length(s)-i+1]:=se[1];
end;
write(s,'-');
slof:=slof+s;
delete(s,1,length(s));
end;
end.
//Слово Программа она кодирует как 11001111-11110000-11101110-11100011-11110000-11100000-11101100-11101100-11100000-