В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает
Ответ:
Сначала считаем все числа из файла в массив. Для каждой пары будем проверять,
Приведём решение задачи на языке Pascal.
var
i, j: integer;
count: longint;
maxdif: integer;
arr: array[1..10000] of integer;
f: text;
begin
assign(f,'C:\17.txt');
reset(f);
maxdif := 0;
count := 0;
for i := 1 to 10000 do readln(f, arr[i]);
for i := 1 to 10000 - 1 do
for j := i + 1 to 10000 do begin
if (abs(arr[i] - arr[j]) mod 80 = 0) then begin
count := count + 1;
if abs(arr[i] - arr[j]) > maxdif then maxdif := abs(arr[i] - arr[j]);
end;
end;
writeln(count, ' ', maxdif);
end.
Приведём решение Николая Чуркина (Тимашевск) на языке Python.
count = m = 0
f = open('17.txt')
l = [int(i) for i in f]
for i in range(len(l) - 1):
for j in range(i+1, len(l)):
if (l[i] - l[j]) % 80 == 0:
count += 1
m = max(m, abs(l[i] - l[j]))
print(count, m)
В результате работы данного алгоритма при вводе данных из файла ответ — 625876 9920.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Валерия Григорьева на языке Python.
f = open('137.txt')
mx = [-1]*80
mn = [100000]*80
dvs = [0]*80
for i in f:
a = int(i)
b = a % 80
dvs[b] += 1
if mn[b] > a:
mn[b] = a
if mx[b] < a:
mx[b] = a
sm = 0
smmx = 0
for i in range(80):
sm += dvs[i]*(dvs[i]-1)//2
if (mx[i]-mn[i]) > smmx:
smmx = mx[i]-mn[i]
print(sm, smmx)

