Предмет: Информатика,
автор: 666god2
Помогите написать программу на паскале.
Федя с клавиатуры последовательность натуральных чисел. Он хочет получить и вывести на экран максимально возможную сумму трех чисел из последовательности, каждое из которых оканчивается на цифру 3.
Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 10 в 6. Введённые числа не превышают 30000.
Программа должна вывести одно число - максимальную сумму трех чисел, каждое из которых оканчивается на цифру 3. Если чисел, отвечающих условия не нашлось, выводится 0.
Пример:
вход: 6 7 13 15 3 23 103
вывод: 139
Ответы
Автор ответа:
0
Федя с клавиатуры последовательность PascalABC.NET
Приложения:
Giammy:
Я не могу быть на 100% уверен, но при n=7 и наборе чисел 13 23 33 14 23 33 43 результат должен быть 99, а не 109
33+33+43=109
Условие не так понял.. думал нужна сумма именно из последовательности чисел оканчивающихся на 3)
Тогда можно все гораздо проще написать
И у вас ввод не соответствует вводу в условии.
что не так с вводом?
Там просто вводятся числа, без текстовых подсказок и проверок, из-за ввода в 1 ряд в вашем коде могут возникнуть проблемы при проверке в тестовой системе
не написано что нужно вводить одной строкой
Вам пример ввода предоставили
Автор ответа:
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.
Приложения:
а где проверка на то что n не больше 10 в 6 степени и что числа не больше 30000?
Это гарантируется условием
Нет слова типа "должно", нет условия "иначе" что делать, если вдруг число будет больше? Нет такого пункта как запросить заново ввод
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.
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.
Способов много, n необязательно отдельно получать, она дальше же у вас нигде не используется
это чтоб человек не путался при вводе, а вообще это все должно оговариваться, наверное
А, единсвенное забыл написать, когда элементов мало будет, завтра исправлю
Похожие вопросы