For
он может идти с нарастанием
for i:=1 to 10 do
и с убыванием
for i:=10 downto 1 do
Если число заканчивается на 5 или 0, то по признакам делимости оно кратно 5.
<u>1. Глупый школьный вариант</u>
Перебираем все числа в заданном диапазоне и если встречаем кратное 5, прибавляем его к сумме.
var
i,s:integer;
begin
s:=0;
for i:=1 to 200 do
if i mod 5=0 then s:=s+i;
Writeln(s)
end.
<em>Результат:</em>
4100
<u>2. Более умный школьный вариант с циклом while</u>
Первое число, кратное 5 - это 5. А дальше прибавляем по 5 к сумме и ничего не нужно проверять.
var
i,s:integer;
begin
i:=5; { первое подходящее число }
s:=i;
while i<200 do begin
i:=i+5;
s:=s+i
end;
Writeln(s)
end.
<u>3. Еще более умный школьный вариант с циклом for</u>
От предыдущего отличается способом получения нужных чисел.
Замечаем, что ряд 5, 10, 15, 20, ... можно получить из чисел 1, 2, 3, 4, ..., умножая их на 5. И таких чисел будет 40.
var
i,s:integer;
begin
s:=0;
for i:=1 to 40 do s:=s+5*i;
Writeln(s)
end.
<u>4. Современный вариант на современном Паскале</u>
Генерируем последовательность нужных чисел и находим сумму её элементов.
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
Range(5,200,5).Sum.Println
end.
Идем от обратного, Нужно получить из 100019 операциями -1 и /7 число 1.
1,2,3) Целочисленно 100019 на 7 не делится. ближайшее число, делимое на 7 это 100016 ( целочисленно делим 100019/7 = 14288, 14288*7=100016). Для этого нужно сделать трижды операцию -1
100019-1-1-1=100016
4) 100016/7 = 14288.
5) 14288 опять не делится. Ближайшее число <span>14287.
</span>14288-1=14287
6) 14287/7=2041
7,8,9,10) 2041-1-1-1-1=2037
11) 2037/7=291
12,13,14,15) 291-1-1-1-1=287
16) 287/7=41
17,18,19,20,21,22) 41-1-1-1-1-1-1=35
23) 35/7=5
24,25,26,27) 5-1-1-1-1=1
Итого я насчитал 27 ходов.