Если число заканчивается на 5 или 0, то по признакам делимости оно кратно 5.
1. Глупый школьный вариант
Перебираем все числа в заданном диапазоне и если встречаем кратное 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.
Результат: 4100
2. Более умный школьный вариант с циклом while
Первое число, кратное 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.
3. Еще более умный школьный вариант с циклом for
От предыдущего отличается получения нужных чисел. Замечаем, что ряд 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.
4. Современный вариант на современном Паскале
Генерируем последовательность нужных чисел и находим сумму её элементов.
// PascalABC.NET 3.3, сборка 1625 от 17.01.2018 // Внимание! Если программа не работает, обновите версию!
Рекурсивный подход.(Символы тоже удаляет) function grad(s:string):string; var i:byte; detect:boolean; begin while i < length(s) - 2 do begin inc(i); if (s[i] = s[i+1]) and (s[i] = s[i+2]) then {проверка последовательности из 3 елементов} begin delete(s,i,3); {если да - удаляем их} detect:=True; {логическая переменная регистрирует изменение строки} end;end; if detect = True then s:=grad(s); {если строку изменили , проверяем не появились ли там еще последовальности} grad:=s; end;
var s:string; begin readln(s); writeln(grad(s)); end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку