Целочисленная арифметика
Эта глава дает базовые операции и типовые шаблоны для первых задач. Продвинутые случаи с отрицательными остатками и нормализацией вынесены отдельно: Делимость и остатки.
В 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 |
Расписание уроков.
27
5 2
Батарейки (упаковки по 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 |
Расписание уроков.
27
5 2
Батарейки (упаковки по 4 и поштучно).
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 |
остаток от деления |
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 |
Расписание уроков.
27
5 2
Батарейки (упаковки по 4 и поштучно).
14
3 2
Сумма цифр трехзначного числа.
538
16
Порядок действий важно проверять скобками.
| Выражение | Эквивалентно | Значение |
|---|---|---|
3 * 5 - 2 |
(3 * 5) - 2 |
13 |
3 + 5 // 2 |
3 + (5 // 2) |
5 |
3 - 5 - 2 |
(3 - 5) - 2 |
-4 |
Продвинутые разборы по отрицательным остаткам и нормализации вынесены в Делимость и остатки.
По материалам:
М. Густокашин. Введение в программирование на языке C++. Сириус Курсы. Перейти к курсу.