Предмет: Информатика, автор: 666god2

Помогите написать программу на паскале.

Федя с клавиатуры последовательность натуральных чисел. Он хочет получить и вывести на экран максимально возможную сумму трех чисел из последовательности, каждое из которых оканчивается на цифру 3.
Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 10 в 6. Введённые числа не превышают 30000.
Программа должна вывести одно число - максимальную сумму трех чисел, каждое из которых оканчивается на цифру 3. Если чисел, отвечающих условия не нашлось, выводится 0.
Пример: 
вход: 6 7 13 15 3 23 103
вывод: 139

Ответы

Автор ответа: iolandavalerypad353
0

Федя с клавиатуры последовательность PascalABC.NET

Приложения:

Giammy: Я не могу быть на 100% уверен, но при n=7 и наборе чисел 13 23 33 14 23 33 43 результат должен быть 99, а не 109
iolandavalerypad353: 33+33+43=109
Giammy: Условие не так понял.. думал нужна сумма именно из последовательности чисел оканчивающихся на 3)
Giammy: Тогда можно все гораздо проще написать
Giammy: И у вас ввод не соответствует вводу в условии.
iolandavalerypad353: что не так с вводом?
Giammy: Там просто вводятся числа, без текстовых подсказок и проверок, из-за ввода в 1 ряд в вашем коде могут возникнуть проблемы при проверке в тестовой системе
iolandavalerypad353: не написано что нужно вводить одной строкой
Giammy: Вам пример ввода предоставили
Автор ответа: Giammy
0

PascalABC.NET 3.4.2, сборка 1814 от 02.10.2018


begin

 var a := ReadArrInteger(ReadInteger).Where(t -> t mod 10 = 3)

                                                                 .SortedDescending;

 Println(a.Count >= 3 ? a.Take(3).Sum : 0)

end.

Приложения:

iolandavalerypad353: а где проверка на то что n не больше 10 в 6 степени и что числа не больше 30000?
Giammy: Это гарантируется условием
Giammy: Нет слова типа "должно", нет условия "иначе" что делать, если вдруг число будет больше? Нет такого пункта как запросить заново ввод
iolandavalerypad353: begin
var n := ReadInteger('n =');
var a := ReadArrInteger(n);
if a.Where(x -> x mod 10 = 3).Count >= 3 then
a.Where(x -> x mod 10 = 3).SortedDescending.Take(3).Sum.Println
else Print(0)
end.
Giammy: Способов много, n необязательно отдельно получать, она дальше же у вас нигде не используется
iolandavalerypad353: это чтоб человек не путался при вводе, а вообще это все должно оговариваться, наверное
Giammy: А, единсвенное забыл написать, когда элементов мало будет, завтра исправлю
Похожие вопросы
Предмет: Математика, автор: arianalukancuk
Предмет: Химия, автор: Dina0798