Целочисленная арифметика

Эта глава дает базовые операции и типовые шаблоны для первых задач. Продвинутые случаи с отрицательными остатками и нормализацией вынесены отдельно: Делимость и остатки.

В Java в базовых задачах обычно используют тип int.

Выражение Значение Комментарий
17 + 3 20 сложение
17 - 3 14 вычитание
17 * 3 51 умножение
17 / 3 5 деление нацело
17 % 3 2 остаток от деления
int a = 17;
int b = 3;

System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);

Вывод
20
14
51
5
2

Для положительных чисел удобно держать проверку: если q = a / b, r = a % b, то a = b * q + r и 0 <= r < b при b > 0.

Базовые шаблоны:

Ситуация Формула
Разбить n объектов в группы по k full = n / k, rem = n % k
Разбор числа по цифрам digit = n % 10, n = n / 10
Часы при x >= 0 (t + x) % 24

Расписание уроков.

int n = in.nextInt();
System.out.println(n / 5);
System.out.println(n % 5);

Ввод
27
Вывод
5
2

Батарейки (упаковки по 4 и поштучно).

int n = in.nextInt();
System.out.println(n / 4 + " " + n % 4);

Ввод
14
Вывод
3 2

Сумма цифр трехзначного числа.

int n = in.nextInt();
int d3 = n % 10;
int d2 = n / 10 % 10;
int d1 = n / 100;
System.out.println(d1 + d2 + d3);

Ввод
538
Вывод
16

Порядок действий важно проверять скобками.

Выражение Эквивалентно Значение
3 * 5 - 2 (3 * 5) - 2 13
3 + 5 / 2 3 + (5 / 2) 5
3 - 5 - 2 (3 - 5) - 2 -4

Для отрицательных чисел и циклических задач с x < 0 используйте правила из главы Делимость и остатки.

В C++ для базовых задач также обычно используют int.

Выражение Значение Комментарий
17 + 3 20 сложение
17 - 3 14 вычитание
17 * 3 51 умножение
17 / 3 5 деление нацело
17 % 3 2 остаток от деления
int a = 17;
int b = 3;

cout << a + b << endl;
cout << a - b << endl;
cout << a * b << endl;
cout << a / b << endl;
cout << a % b << endl;

Вывод
20
14
51
5
2

Для положительных чисел работает проверка: если q = a / b, r = a % b, то a = b * q + r и 0 <= r < b при b > 0.

Базовые шаблоны:

Ситуация Формула
Разбить n объектов в группы по k full = n / k, rem = n % k
Разбор числа по цифрам digit = n % 10, n = n / 10
Часы при x >= 0 (t + x) % 24

Расписание уроков.

int n;
cin >> n;
cout << n / 5 << endl;
cout << n % 5 << endl;

Ввод
27
Вывод
5
2

Батарейки (упаковки по 4 и поштучно).

int n;
cin >> n;
cout << n / 4 << " " << n % 4 << endl;

Ввод
14
Вывод
3 2

Сумма цифр трехзначного числа.

int n;
cin >> n;
int d3 = n % 10;
int d2 = n / 10 % 10;
int d1 = n / 100;
cout << d1 + d2 + d3 << endl;

Ввод
538
Вывод
16

Порядок действий важно проверять скобками.

Выражение Эквивалентно Значение
3 * 5 - 2 (3 * 5) - 2 13
3 + 5 / 2 3 + (5 / 2) 5
3 - 5 - 2 (3 - 5) - 2 -4

Для отрицательных чисел и циклических задач с x < 0 используйте правила из главы Делимость и остатки.

В Python тип целых тоже называется int.

Важное отличие: / дает дробный результат, а // - деление нацело.

Выражение Значение Комментарий
17 + 3 20 сложение
17 - 3 14 вычитание
17 * 3 51 умножение
17 / 3 5.666666666666667 обычное деление (float)
17 // 3 5 деление нацело
17 % 3 2 остаток от деления
a = 17
b = 3

print(a / b)
print(a // b)
print(a % b)

Вывод
5.666666666666667
5
2

Для b > 0 проверка выглядит так: если q = a // b, r = a % b, то a = b * q + r и 0 <= r < b.

Базовые шаблоны:

Ситуация Формула
Разбить n объектов в группы по k full = n // k, rem = n % k
Разбор числа по цифрам digit = n % 10, n = n // 10
Часы при x >= 0 (t + x) % 24

Расписание уроков.

n = int(input())
print(n // 5)
print(n % 5)

Ввод
27
Вывод
5
2

Батарейки (упаковки по 4 и поштучно).

n = int(input())
print(n // 4, n % 4)

Ввод
14
Вывод
3 2

Сумма цифр трехзначного числа.

n = int(input())
d3 = n % 10
d2 = n // 10 % 10
d1 = n // 100
print(d1 + d2 + d3)

Ввод
538
Вывод
16

Порядок действий важно проверять скобками.

Выражение Эквивалентно Значение
3 * 5 - 2 (3 * 5) - 2 13
3 + 5 // 2 3 + (5 // 2) 5
3 - 5 - 2 (3 - 5) - 2 -4

Продвинутые разборы по отрицательным остаткам и нормализации вынесены в Делимость и остатки.


По материалам:
М. Густокашин. Введение в программирование на языке C++. Сириус Курсы. Перейти к курсу.