Статья Автор: Деникина Н.В., Деникин А.В.

Обработка последовательности чисел - 4

Задание 16 ОГЭ

Системы счисления: другие основания

Последняя цифра в СС, нечётная цифра, разрядность в СС

 

определяем последнюю цифру в системах счисления

Главное правило
!
Последняя цифра числа a в системе с основанием base — это a % base.
Не нужно переводить число! Просто берём остаток от деления.

Примеры: «в 7-ричной оканчивается на 3» → a % 7 == 3. «В 16-ричной на F (15)» → a % 16 == 15.

«Нечётная последняя цифра в 5-ричной» → a % 5 % 2 == 1 (цифры 1 или 3).

«Четырёхзначное в 8-ричной» → 512 <= a <= 4095 (от 8³ до 8⁴−1).

Пример 1: сумма чисел с окончанием 1 в 7-ричной

Условие

Напишите программу подсчёта суммы элементов последовательности натуральных чисел, запись которых в 7-ричной системе счисления оканчивается на цифру 1. Программа должна напечатать только одно число — искомую сумму.

Python · for
Python · while
Python · while True
C++
КуМир
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
n = int(input())
s = 0
for i in range(n):
    a = int(input())
    if a % 7 == 1:
        s += a
print(s)
Ввод: последовательность заканчивается числом 0 (0 не входит в последовательность). Числа не превышают 30 000.
a = int(input())
s = 0
while a != 0:
    if a % 7 == 1:
        s += a
    a = int(input())
print(s)
Ввод: последовательность заканчивается числом 0 (0 не входит в последовательность). Числа не превышают 30 000.
s = 0
while True:
    a = int(input())
    if a == 0:
        break
    if a % 7 == 1:
        s += a
print(s)
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
#include <iostream>
using namespace std;
int main() {{
    int n, a, s = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {{
        cin >> a;
        if (a % 7 == 1) s += a;
    }}
    cout << s << endl;
}}
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
алг
нач
  цел n, a, s, i
  ввод n
  s := 0
  нц для i от 1 до n
    ввод a
    если mod(a, 7) = 1 то
      s := s + a
    все
  кц
  вывод s
кон

Пример 2: 4-значное в 8-ричной, кончается на 5

Условие

Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 5. Программа должна напечатать одно число — искомое количество.

Python · for
Python · while
Python · while True
C++
КуМир
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
n = int(input())
cnt = 0
for i in range(n):
    a = int(input())
    if 512 <= a <= 4095 and a % 8 == 5:
        cnt += 1
print(cnt)
Ввод: последовательность заканчивается числом 0 (0 не входит в последовательность). Числа не превышают 30 000.
a = int(input())
cnt = 0
while a != 0:
    if 512 <= a <= 4095 and a % 8 == 5:
        cnt += 1
    a = int(input())
print(cnt)
Ввод: последовательность заканчивается числом 0 (0 не входит в последовательность). Числа не превышают 30 000.
cnt = 0
while True:
    a = int(input())
    if a == 0:
        break
    if 512 <= a <= 4095 and a % 8 == 5:
        cnt += 1
print(cnt)
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
#include <iostream>
using namespace std;
int main() {
    int n, a, cnt = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a;
        if (a >= 512 && a <= 4095 && a % 8 == 5) cnt++;
    }
    cout << cnt << endl;
}
Ввод: сначала подаётся количество чисел N, затем сами числа (по одному в строке). Числа не превышают 30 000.
алг
нач
  цел n, a, cnt, i
  ввод n
  cnt := 0
  нц для i от 1 до n
    ввод a
    если a >= 512 и a <= 4095 и mod(a, 8) = 5 то
      cnt := cnt + 1
    все
  кц
  вывод cnt
кон

512 = 8³ (наименьшее 4-значное), 4095 = 8⁴ − 1 (наибольшее).

Проверь себя

Выбери правильный ответ. При ошибке покажем объяснение.

ОЧКИ: 0 / 0
 
 
 
 
 

Шпаргалка

Задача Код
Последняя цифра в base a % base
Нечётная последняя в base a % base % 2 == 1
k-значное в base base**(k-1) <= a <= base**k - 1
Степени      
5²=25 5³=125 7²=49 7³=343
8²=64 8³=512 8⁴=4096 16²=256
Печать