Домашние задания: Информатика

Информатика. Паскаль. Помогите

В массиве 100 целых положительных чисел, каждое число не превышает 10 000. Определите и запишите в ответе сначала количество пар элементов массива, у которых разность элементов кратна 45 и хотя бы один из элементов кратен 18, затем максимальную из разностей элементов таких пар.
 const 
N = 100;

var
a: array[1..N] of integer;
i, j, count, max_diff: integer;

begin
// Чтение элементов массива
for i := 1 to N do
read(a[i]);

count := 0;
max_diff := 0;

// Проверка каждой пары элементов
for i := 1 to N - 1 do
for j := i + 1 to N do
if ((abs(a[i] - a[j]) mod 45 = 0) and ((a[i] mod 18 = 0) or (a[j] mod 18 = 0))) then
begin
count := count + 1;
if abs(a[i] - a[j]) > max_diff then
max_diff := abs(a[i] - a[j]);
end;

// Вывод результата
writeln(count, ' ', max_diff);
end.
В этом коде мы инициализируем массив чисел и затем считываем значения из ввода пользователя. Затем мы проходим через каждую пару чисел в массиве. Если разность между двуми числами кратна 45 и хотя бы одно из чисел кратно 18, мы увеличиваем счетчик и проверяем, больше ли разность текущих чисел максимальной найденной разности. В конце мы выводим количество подходящих пар и максимальную разность.
Людмила Бутакова
Людмила Бутакова
56 728
Лучший ответ
PascalABC:

const n = 100;
var A : array[1..n] of integer; Col, Raz: integer;
begin
WriteLn (' Исходный массив:');
for var i := 1 to n do
begin
A[i] := 1 + Random (n*n); if ( i mod 20 <> 0) then Write (A[i]:6) else WriteLn; end;
Col := 0; Raz := 0;
for var i := 1 to (n-1) do
for var j := i + 1 to (n) do
if ((abs(A[i] - A[j]) mod 45 = 0) and ((A[i] mod 18 = 0) or (a[j] mod 18 = 0))) then
begin
Col := Col + 1; if abs(A[i] - A[j]) > Raz then Raz := abs (A[i] - A[j]); end;
Writeln (' Количество пар равно ' , Col);
Writeln (' Максимальная разность равна ', Raz);
end.