1.Напишите программку, которая в последовательности естественных чисел находит кол-во чисел

1.Напишите программку, которая в последовательности натуральных чисел обретает кол-во чисел кратных 8 из промежутка [121,400]
Вход: программка получает на вход последовательность естественных чисел, кончающиеся на 0. Кол-во чисел не превосходит 1000, а сами числа не превышают 30000.
Выход: Программа должна вывести одно число-кол-во трехзначных чисел кратных 8 и принадлежащих промежутку [121,400]

2. Напишите программку, которая в последовательности обретает сумму чисел, не кратных 8 и заканчивающееся на 2.
Вход: Программка получает на вход кол-во чисел, а потом сами числа. Количество не превосходит 1000, а сами числа не превосходят 30000.
Выход: программка должна вывести одно число- сумму чисел, не кратных 8 и оканчивающихся на 2.

PascalABC.NET
для 8го класса с бесхитростным решением

Задать свой вопрос
1 ответ
1. Чтобы найти количество чисел, кратных восьми, на заданном интервале [a;b], надобно отыскать на этом интервале ближайшее к a число и потом добавлять к нему по восемь, пока не пройдем весь интервал, считая, сколько чисел прошли. Но это неразумный метод. Он просто и бездумно программируется, но как считали раньше, когда компьютеров не было?
Определим остаток от разделения а на 8. Если он нулевой, то a - первое из отысканных чисел. Остаток от деления 121 на 8 равен 1, т.е. нам не повезло. Тогда прибавим к значению а число 8 и вычтем отысканный остаток.121+8-1=128. Это и есть наше 1-ое число. Сужаем интервал [128;400]. Чтоб отыскать, сколько на нем чисел, кратных 8, надобно поделить нацело 400-128 на 8 и прибавляем к результату единицу. Получаем 35 - это и есть ответ.
Программку составим универсальную, которая будет обретать на интервале [a;b] количество чисел, кратных m.

PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var (a,b):=ReadInteger2('Введите через пробел границы промежутка:');
  var m:=ReadInteger('Укажите число для поиска кратных ему:');
  var r:=a mod m;
  if rgt;0 then a:=a+8-r;
  Writeln('Количество чисел равно ',(b-a) div m +1)
end.

Пример
Введите через пробел границы интервала: 121 400
Укажите число для поиска кратных ему: 8
Количество чисел одинаково 35

2. В этой задаче все совершенно просто. Читаем еще одно число p, обретаем остаток от дробления p на восемь. Если он ненулевой, проверяем, чтоб остаток от дробления p на 10 был равен двум. Если и это правильно, прибавляем p к накапливаемой сумме s. Так поступаем n раз.

begin
  var n:=ReadInteger('n=');
  var s:=0;
  var p:integer;
  for var i:=1 to n do begin
    Read(p);
    if p mod 8 lt;gt; 0 then
      if p mod 10 = 2 then s:=s+p
    end;
  Writeln('Сумма отобранных чисел одинакова ',s)
end.

Пример
n= 8
127 32 222 45 80 832 702 29
Сумма отобранных чисел одинакова 924
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт