uapev
Вопрос по математике:
Какая из данных сумм не кратно 5?
1)131+6843 2)93+457
3) 3904+6816 4) 28+307+435
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок — бесплатно!
Ответы и объяснения 2
jaire457
131+6843 не кратно 5
qusop95
Кратны 5 будут те суммы, которые заканчиваются на 0 или 5
не решая весь пример , складываем только последние цифры чисел и получаем 1) пример будет не кратен 5
Знаете ответ? Поделитесь им!
Гость ?
Как написать хороший ответ?
Как написать хороший ответ?
Чтобы добавить хороший ответ необходимо:
- Отвечать достоверно на те вопросы, на которые знаете
правильный ответ; - Писать подробно, чтобы ответ был исчерпывающий и не
побуждал на дополнительные вопросы к нему; - Писать без грамматических, орфографических и
пунктуационных ошибок.
Этого делать не стоит:
- Копировать ответы со сторонних ресурсов. Хорошо ценятся
уникальные и личные объяснения; - Отвечать не по сути: «Подумай сам(а)», «Легкотня», «Не
знаю» и так далее; - Использовать мат — это неуважительно по отношению к
пользователям; - Писать в ВЕРХНЕМ РЕГИСТРЕ.
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует?
Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие
вопросы в разделе Математика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи —
смело задавайте вопросы!
Математика — наука о структурах, порядке и отношениях, исторически сложившаяся на основе операций подсчёта, измерения и описания формы объектов.
Задача, на самом деле, не совсем логична. Ведь, давайте представим такой массив:
int a[16] = {-6,2,5,1,0,3,4,5,8,8,10,9,11,23,14,25};
Ведь его можно разделить всего на две части: первые два числа и все остальное. При чем все остальное — есть непрерывная последовательность, сумма элементов которой больше суммы первой подгруппы. Так можно делать с каждым массивом: тупо бить его на две или три части последовательно. Подумайте сами. Задача либо требует уточнений( например, максимальное количество элементов в последовательности ), либо не верна.
К примеру, я придумал такой алгоритм( Работа алгоритма производится за линейное время. Это придает алгоритму краткость и понятность. ):
(Алгоритм основан на том, что каждое отрицательное значение дает минус в сумме подгруппы )
int sums[16] = {0};
int a[16] = {-6,1,-2,0,1,1,-17,1,0,1,-100,1,1,-1,-1,1};
int n = 0;
for(int i = 0;i<16;i++)
{
if(a[i]>=0)
for(int j=n;j<=i;j++) sums[j]+=a[i];
else n=i;
}
int max = 0; int ind = 0;
for(int j=0;j<16;j++)
{
cout<<sums[j]<<endl;
if(sums[j]>max) {max = sums[j]; ind=j;}
}
cout<<"The longest subarray in array begins in "<<ind+1<<" position! Sum = "<<max<<endl;
Задачка была следующая — дан массив длинной до 200, 000 элементов, элементами которого являются целые числа в диапазоне [-10000, 10000].
Нужно найти максимальную сумму, которую можно получить сложением произвольной неразрывной последовательности элементов этого массива.
Типа для входных данных [2,-2,-5,2,2,-1,2,-3] будет 5 — сумма подмассива [2,2,-1,2]
Я в алгоритмах не силен, но вроде как нащупал верный, правда забыл про смешное граничное условие и не успел закончить вовремя.
Как бы вы стали решать эту задачу?
В условии также есть ограничение по времени выполнения алгоритма — не более 2-х секунд в их интерпретаторе.
В заданиях, где встречается фраза «…Программа получает на вход количество чисел в последовательности…»
для ввода самих чисел и проверки на соответствие условию удобно использовать оператор for … to … do begin …end;
В заданиях, где встречается фраза «…последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность)…»
для ввода самих чисел и проверки на соответствие условию удобно использовать оператор while … do begin …end;
В этом случае число вводят с клавиатуры два раза до цикла, потом в цикле идет проверка условий и снова ввод следующего числа
Задача 1
Напишите программу, которая в последовательности натуральных чисел определяет
максимальное число, кратное 5. Программа получает на вход количество чисел в
последовательности, а затем сами числа. В последовательности всегда имеется
число, кратное 5. Количество чисел не превышает 1000. Введённые числа не превышают
30 000. Программа должна вывести одно число – максимальное число, кратное 5.
Пример работы программы:
Входные данные |
Выходные данные |
3 10 25 12 |
25 |
Пояснение: в данной программе будем использовать переменные i — переменная цикла, n — количество чисел в последовательности, a — вводимое число, max — для хранения найденного числа.
Мы ищем максимальное число, поэтому начальное значение max:=0.
Условия отбора: кратность 5 (a mod 5=0) и наибольшее (a>max)
Текст программы
var i, n, a, max: integer; /объявление переменных
begin
max:=0; /начальное значение max
readln(n); /ввод количества чисел в последовательности
for i:=1 to n do /цикл
begin
readln(a); /ввод числа
if (a mod 5=0) and (a>max) then max:=a; /проверка условия и нахождение max
end;
writeln(max); /вывод найденного максимального кратного 5
Задача 2
Напишите программу, которая в последовательности натуральных чисел определяет
сумму чисел, кратных 6. Программа получает на вход количество чисел в
последовательности, а затем сами числа. В последовательности всегда имеется число,
кратное 6. Количество чисел не превышает 100. Введённые числа не превышают 300.
Программа должна вывести одно число – сумму чисел, кратных 6.
Пример работы программы:
Входные данные |
Выходные данные |
3 12 25 6 |
18 |
Пояснение: в данной программе будем использовать переменные n — количество чисел в последовательности, s — для хранения найденной суммы, k — переменная цикла, g — вводимое число.
Мы ищем сумму, поэтому начальное значение s:=0.
Условие отбора кратность 6 (g mod 6=0)
Текст программы
var n, s, k, g:
integer; /объявление переменных
begin
s:=0; /начальное значение суммы чисел
readln(n); /ввод количества чисел в последовательности
for k:=1 to n do /цикл
begin
readln(g); /ввод числа
if (g mod 6=0) then s:=s+g; /проверка условия и нахождение суммы
end;
writeln(s); /вывод суммы чисел кратных 6
Задача 3
Напишите программу, которая в последовательности натуральных чисел определяет
количество чисел, кратных 4. Программа получает на вход количество чисел в
последовательности, а затем сами числа. В последовательности всегда имеется
число, кратное 4. Количество чисел не превышает 1000. Введённые числа не превышают
30 000. Программа должна вывести одно число – количество чисел, кратных 4.
Пример работы программы:
Входные данные |
Выходные данные |
3 16 26 24 |
2 |
Пояснение: в данной программе будем использовать переменные n — количество чисел в последовательности, s — для хранения количества чисел кратных 4, k — переменная цикла, g — вводимое число.
Мы ищем количество, поэтому начальное значение s:=0.
Условие отбора кратность 4 (g mod 4=0)
Текст программы
var n, s, k, g:
integer; /объявление переменных
begin
s:=0; /начальное значение количества чисел кратных 4
readln(n); /ввод количества чисел в последовательности
for k:=1 to n do /цикл
begin
readln(g); /ввод числа
if (g mod 4=0) then s:=s+1; /проверка условия и нахождение количества
end;
writeln(s); /вывод количества чисел кратных 4
Задача 4
Напишите программу, которая в последовательности натуральных чисел определяет
количество чисел, оканчивающихся на 3. Программа получает на вход количество
чисел в последовательности, а затем сами числа. В последовательности всегда имеется
число, оканчивающееся на 3. Количество чисел не превышает 1000. Введённые числа
не превышают 30 000. Программа должна вывести одно число – количество чисел,
оканчивающихся на 3.
Пример работы программы:
Входные данные |
Выходные данные |
3 13 23 24 |
2 |
Пояснение: в данной программе будем использовать переменные n — количество чисел в последовательности, s — для хранения количества чисел оканчивающихся на 3, k — переменная цикла, a — вводимое число.
Мы ищем количество, поэтому начальное значение s:=0.
Условие число оканчивается на 3 (a mod 10=3)
Текст программы
var n, s, k, a:
integer; /объявление переменных
begin
s:=0; /начальное значение количества чисел оканчивающихся на 3
readln(n); /ввод количества чисел в последовательности
for k:=1 to n do /цикл
begin
readln(a); /ввод числа
if (a mod 10=3) then s:=s+1; /проверка условия и нахождение количества
end;
writeln(s); /вывод количества чисел оканчивающихся на 3
Задача 5
Напишите программу, которая в последовательности натуральных чисел определяет минимальное чётное число, оканчивающиеся на 8. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется чётное число оканчивающиеся на 8. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число — минимальное чётное число, оканчивающиеся на 8.
Пример работы программы:
Пояснение: в данной программе будем использовать переменные n — количество чисел в последовательности, i — переменная цикла, min — для хранения минимального четного числа оканчивающихся на 8, a — вводимое число.
Мы ищем минимальное, поэтому начальное значение min:=30001 (самое большое число).
Условия: четность (a mod 2=0), окончание на 8 (a mod 10=8), минимальное (a<min)
Текст программы
var n,i,a,min: integer; /объявление переменных
begin
readln(n);/ввод количества чисел в последовательности
min:=30001; /начальное значение минимального
for i:=1 to n do /цикл
begin
readln(a); /ввод числа
if (a mod 2=0) adn (a mod 10=8) and (a<min) then min:=a; /проверка условий
end;
writeln(min) /вывод минимального четного, оканчивающегося на 8
end.
Задача 6
Напишите программу, которая в последовательности натуральных чисел определяет
определяет сумму всех чисел, кратных 6 и оканчивающихся на 4. Программа получает
на вход натуральные числа, количество введённых чисел неизвестно, последовательность
чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в
последовательность). Количество чисел не превышает 1000. Введённые числа не превышают
30 000. Программа должна вывести одно число: сумму всех чисел, кратных 6 и оканчивающихся
на 4.
Пример работы программы:
Входные данные |
Выходные данные |
14 24 144 22 12 0 |
168 |
Пояснение: в данной программе будем использовать переменные a — вводимое число, s — для хранения суммы чисел кратных 6 и оканчивающихся на 4.
Мы ищем сумму, поэтому начальное значение s:=0.
Условия: кратность 6 (a mod 6=0), число оканчивается на 4 (a mod 10=4)
Текст программы
var a, s: integer; /объявление переменных
begin
s:=0; /начальное значение суммы
readln(a); /ввод числа
while a<>0 do begin /оператор цикла пока а не равно 0
if (a mod 6=0) and (a mod 10=4) then s:=s+a; /проверка условий
readln(a); /ввод числа
end;
writeln(s); /вывод суммы чисел кратных 6 и оканчивающихся на 4
Задача 7
Напишите программу, которая в последовательности целых чисел определяет
количество нечётных чисел, кратных 3. Программа получает на вход целые числа,
количество введённых чисел неизвестно, последовательность чисел заканчивается
числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество
чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа
должна вывести два числа: длину последовательности (завершающий 0 не
учитывается) и количество нечётных чисел, кратных 3.
Пример работы программы:
Пояснение: в данной программе будем использовать переменные a — вводимое число, k — для хранения количества нечетных чисел кратных 3, n длина последовательности (количество чисел введенных с клавиатуры не считая последний 0).
Мы ищем количество, поэтому начальное значение k:=0 и n:=0.
Условия: нечетность (a mod 2 <>0), кратность 3 (a mod 3=0)
Текст программы
var k, a, n:
integer; /объявление переменных
begin
n:=0; /начальное значение счетчика чисел в последовательности
k:=0; /начальное значение количества чисел удовлетворяющих условию отбора
readln(a); /ввод числа
while a<>0 do /оператор цикла пока а не равно 0
begin
n:=n+1; /подсчет количества чисел в последовательности
if (a mod 2<>0) and (a mod 3=0) then k:=k+1; /проверка условия
readln(a); /ввод числа
end;
writeln(n); /вывод количества чисел в последовательности
writeln(k); /вывод количества нечетных чисел кратных 3
Задача 8
Напишите программу, которая в последовательности натуральных чисел определяет
количество всех чётных чисел, кратных 5. Программа получает на вход натуральные
числа, количество введённых чисел неизвестно, последовательность чисел заканчивается
числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество
чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна
вывести одно число: количество всех чётных чисел, кратных 5.
Пример работы программы:
Пояснение: в данной программе будем использовать переменные a — вводимое число, s — для хранения количества четных чисел кратных 5.
Мы ищем количество, поэтому начальное значение s:=0.
Условия: четное число, кратное 5 это число оканчивается на 0 (a mod 10=0)
Текст программы
var a, s: integer; /объявление переменных
begin
s:=0; /начальное значение количества
readln(a); /ввод числа
while a<>0 do /оператор цикла пока а не равно 0
begin
if a mod 10=0 then s:=s+1; /проверка условия
readln(a); /ввод числа
end;
writeln(s) /вывод количества четных чисел кратных 5
Задача 9
Напишите программу, которая в последовательности натуральных чисел определяет
сумму всех чисел, кратных 7 и оканчивающихся на 2. Программа получает на вход
натуральные числа, количество введённых чисел неизвестно, последовательность
чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в
последовательность). Количество чисел не превышает 1000. Введённые числа не превышают
30 000. Программа должна вывести одно число: сумму всех чисел, кратных 7 и оканчивающихся
на 2.
Пример работы программы:
Входные данные |
Выходные данные |
112 24 42 49 22 0 |
154 |
Текст программы
var a, s: integer;
begin
s:=0;
readln(a);
while a<>0 do
begin
if (a mod 7=0) and (a mod 10=2) then s:=s+a;
readln(a);
end;
writeln(s);
Перейти к содержанию
Наибольшая сумма, кратная трем
На чтение 1 мин. Просмотров 8 Опубликовано 08.11.2022
Дан массив целых чисел nums
, необходимо найти максимально возможную сумму элементов массива, кратную трем.
Пример 1:
Вход: nums = [3,6,5,1,8].
Выход: 18
Пояснения: Выберите числа 3, 6, 1 и 8, их сумма равна 18 (максимальная сумма, кратная 3).
Пример 2:
Вход: nums = [4]
Выход: 0
Пояснение: Поскольку 4 не делится на 3, не выбирайте никакое число.
Пример 3:
Вход: nums = [1,2,3,4,4].
Выход: 12
Пояснения: Выберите числа 1, 3, 4 и 4, сумма которых равна 12 (максимальная сумма, кратная 3).
Ограничения:
-
1 <= nums.length <= 4 * 10^4
-
1 <= nums[i] <= 10^4
РЕШЕНИЕ:
import bisect
class Solution:
def maxSumDivThree(self, nums: List[int]) -> int:
msum = 0
n = len(nums)
total = sum(nums)
if total % 3 == 0:
return total
nums.sort()
paths = [(nums[i], i) for i in range(n)]
i = 0
while i < len(paths):
currsum, curr = paths[i]
if (total - currsum) % 3 == 0:
return total - currsum
for j in range(curr + 1, n):
bisect.insort(paths, (currsum + nums[j], j))
i += 1
return 0
Войдите в полноэкранный режим Выйти из полноэкранного режима