дано пятизначное число. Необходимо найти сумму цифр в числе, являющихся четными. Если четных цифр в числе нет, вывести на экран "-1". Опишите математическую модель решения задачи. Составьте блок - схему алгоритма. Напишите программный код !
1.Подсчет количества чисел от 1 до 100, делящихся нацело на 5 или на 7
Объяснение:
Так как изначально i:=1, подсчет чисел начинается именно с единицы. Значит можно смело отбросить варианты ответов 2 и 3.
В цикле написано, что если остаток деления числа i на 5 равен 0 или (как мы знаем, слово or с английского значит или) остаток равен 7, то число s увеличивается на 1. Это значит, что независимо какое из этих двух условий будет выполнено, число s все равно увеличится. Главное, чтобы хотя бы одно из них было выполнено. Поэтому единственный вариант ответа, который нам подходит, это 1-ый.
Последовательность дней недели периодична с периодом 7, поэтому номер дня недели можно найти, взяв остаток от деления: (номер дня недели первого числа + сколько Такое решение будет давать верный ответ для всех дней недели кроме воскресенья: для воскресений будет выведен ноль (а не 7). Решить это можно, перенумеровав все номера дней недели с нуля, а не с единицы.
m - 1 – номер дня недели первого числа месяца (считая с 0) n - 1 – пройдёт от первого числа (m + n - 2) mod 7 – номер нужного дня недели (считая с 0) (m + n - 2) mod 7 + 1 – ответ.
Программа (PascalABC.NET): begin var n := ReadInteger; var m := ReadInteger; print((m + n - 2) mod 7 + 1) end.
Пример ввода: 7 7
Пример вывода: 6 (Действительно, 1 апреля 2018 года – воскресенье, а сегодня, 7 апреля – суббота)
1.Подсчет количества чисел от 1 до 100, делящихся нацело на 5 или на 7
Объяснение:
Так как изначально i:=1, подсчет чисел начинается именно с единицы. Значит можно смело отбросить варианты ответов 2 и 3.
В цикле написано, что если остаток деления числа i на 5 равен 0 или (как мы знаем, слово or с английского значит или) остаток равен 7, то число s увеличивается на 1. Это значит, что независимо какое из этих двух условий будет выполнено, число s все равно увеличится. Главное, чтобы хотя бы одно из них было выполнено. Поэтому единственный вариант ответа, который нам подходит, это 1-ый.
m - 1 – номер дня недели первого числа месяца (считая с 0)
n - 1 – пройдёт от первого числа
(m + n - 2) mod 7 – номер нужного дня недели (считая с 0)
(m + n - 2) mod 7 + 1 – ответ.
Программа (PascalABC.NET):
begin
var n := ReadInteger;
var m := ReadInteger;
print((m + n - 2) mod 7 + 1)
end.
Пример ввода:
7
7
Пример вывода:
6
(Действительно, 1 апреля 2018 года – воскресенье, а сегодня, 7 апреля – суббота)