Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2018, 21:26   #1
Dsvln
Новичок
Джуниор
 
Регистрация: 29.04.2018
Сообщений: 1
По умолчанию Pascal Выбрать из троек натуральных чисел по паре чисел с максимальной суммой, кратной 4

Правильно ли написана программа?

Условие :
Имеется набор данных, состоящий из троек натуральных чисел. Необходимо выбрать из каждой тройки два числа так, чтобы сумма всех выбранных чисел была кратна 4 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0. Входные данные: На вход программе в первой строке подаётся количество троек N (1 < N < 100000). Каждая из следующих N строк содержит три натуральных числа, не превышающих 10 000.
Пример входных данных:
6
8 3 4
4 8 12
9 5 6
2 8 3
12 3 5
1 4 12
Пример выходных данных для приведённого примера входных данных: 88

Код:
var a : array[1..3] of integer;
i,N,k,a1,a2,a3 : integer;
S : longint;

Begin

readln(N);
for i:=1 to 3 do a[i]:=4;
for i:=1 to n do 
  begin
  readln(a1,a2,a3);

  if a1>a2 then 
    if a3>a2 then S:=S+a1+a3 
                         else S:=S+a1+a2 
else 
      if a1>a3 then S:=S+a1+a2 
                           else S:=S+a3+a2; 
 
  k:=abs(a1-a2) mod 4;
  if (k>0) and (abs(a1-a2)<a[k]) then a[k]:=abs(a1-a2);

  k:=abs(a1-a3) mod 4;
  if (k>0) and (abs(a1-a3)<a[k]) then a[k]:=abs(a1-a3);

  k:=abs(a3-a2) mod 4;
  if (k>0) and (abs(a3-a2)<a[k]) then a[k]:=abs(a3-a2);

  end;

if (S mod 4 > 0) and (a[S mod 4]<>4) then writeln(S-a[S mod 4] )
else writeln(0);

End.



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.04.2018 в 08:55.
Dsvln вне форума Ответить с цитированием
Старый 30.04.2018, 02:22   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Ну конечно правильно!

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 30.04.2018, 09:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dsvln Посмотреть сообщение
Правильно ли написана программа?
я не очень понял алгоритм решения, но потестировал и не смог найти варианты исходных троек, для которых программа выдала бы неверный ответ.
Поэтому, я бы сказал, что программа написана правильно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.04.2018, 12:46   #4
Andrey77796
Новичок
Джуниор
 
Регистрация: 30.04.2018
Сообщений: 1
По умолчанию

Интересная реализация данной программы. Но можете ли Вы прокомментировать данный код? Было бы очень интересно полностью "прозреть" вашу программу
Andrey77796 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать в файл последовательного доступа N натуральных чисел: a1, a2, ... аn (числа получить с помощью генератора случайных чисел Casillas1 Помощь студентам 15 15.05.2014 11:41
В квадратной матрице найти столбец с максимальной суммой и строку с максимальной суммой (Pascal) Alexey355 Помощь студентам 1 26.03.2011 14:06
Из н натуральных чисел вычеслить суму и произведение(Pascal) Chibi Помощь студентам 6 21.11.2010 01:00