Pascal. Задача 8-42
Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми (детей на утреннике никогда не бывает больше 100), а оставшиеся конфеты отдает Снегурочке. Снегурочка каждый раз записывает в блокнот количество полученных конфет. Если конфеты разделились между всеми детьми без остатка, Снегурочка ничего не получает и ничего не записывает. Когда утренники закончились, Деду Морозу стало интересно, какое число чаще всего записывала Снегурочка. Дед Мороз и Снегурочка — волшебные, поэтому число утренников N, на которых они побывали, может быть очень большим. Вывести число, которое Снегурочка записывала чаще всего.
Входные данные: Дан входной файл, в первой строке которого задается одно целое положительное число — количество утренников N. Каждая из следующих N строк содержит два целых числа: сначала D — количество пришедших на очередной утренник детей, а затем K — количество конфет в мешке Деда Мороза на этом утреннике. Гарантируется выполнение следующих соотношений:
1 ≤ N ≤ 100000
1 ≤ D ≤ 100 (для каждого D)
D ≤ K ≤ 1000 (для каждой пары D, K)
Описание выходных данных: Программа должна вывести одно число — то, которое Снегурочка записывала чаще всего. Если несколько чисел записывались одинаково часто, надо вывести большее из них. Если Снегурочка ни разу ничего не записывала, надо вывести ноль.
Пример входных данных:
7
10 58
15 315
20 408
100 1000
32 63
32 63
11 121
Пример выходных данных для приведённого выше примера входных данных: 31
const
m = 100;
var
N, i, p, D, K : integer;
a : array[1..m-1] of integer;
f : text;
begin
for i := 1 to m - 1 do a[i] := 0;
Assign(f,'C:\PABCWork.NET\test-8-42-2.txt');
Reset(f);
Readln(f, N);
for i := 1 to N do begin
Readln(f, D, K);
p := K mod D;
if p > 0 then begin
Inc(a[p]);
end;
end;
Close(f);
D := 0;
K := 0;
for i := 1 to m - 1 do begin
if D <= a[i] then begin
D := a[i];
K := i;
end;
end;
Writeln(K);
end.