Generate pandoc dataclasses
This commit is contained in:
+380
@@ -0,0 +1,380 @@
|
||||
# Целые числа в Java: теория и практика
|
||||
|
||||
## 1. Что такое целые числа и зачем они нужны
|
||||
|
||||
**Целое число** — это число без дробной части: ..., −3, −2, −1, 0, 1, 2, 3, ...
|
||||
|
||||
В программировании целые числа используются для:
|
||||
- счёта объектов (количество учеников, итераций цикла);
|
||||
- индексов массивов и коллекций;
|
||||
- идентификаторов (номер заказа, ID пользователя);
|
||||
- работы с денежными суммами в копейках/центах (чтобы избежать ошибок округления);
|
||||
- битовых операций и работы с памятью.
|
||||
|
||||
> ⚠️ **Важно:** в Java нельзя хранить в целочисленной переменной дробное значение — компилятор выдаст ошибку или потребует явного приведения.
|
||||
|
||||
---
|
||||
|
||||
## 2. Примитивные целочисленные типы
|
||||
|
||||
В Java **4 примитивных целочисленных типа**, различающихся диапазоном и объёмом памяти:
|
||||
|
||||
| Тип | Размер | Диапазон | Применение |
|
||||
|-----|--------|----------|------------|
|
||||
| `byte` | 8 бит | от −128 до 127 | экономия памяти в массивах, работа с байтами |
|
||||
| `short` | 16 бит | от −32 768 до 32 767 | редко, в основном в устаревшем коде |
|
||||
| `int` | 32 бита | от −2 147 483 648 до 2 147 483 647 | **основной тип по умолчанию** |
|
||||
| `long` | 64 бита | от −9.2·10¹⁸ до 9.2·10¹⁸ | большие числа, время в миллисекундах |
|
||||
|
||||
**Запомните:** по умолчанию любое целое литеральное число в Java имеет тип `int`. Чтобы получить `long`, добавьте суффикс `L`:
|
||||
|
||||
```java
|
||||
int a = 2_000_000_000; // ок
|
||||
long b = 9_000_000_000L; // без L будет ошибка компиляции
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Объявление переменных и литералы
|
||||
|
||||
```java
|
||||
byte small = 100;
|
||||
short medium = 30_000;
|
||||
int normal = 1_000_000;
|
||||
long big = 123_456_789_012L;
|
||||
|
||||
// Системы счисления:
|
||||
int decimal = 255; // 10-я
|
||||
int hex = 0xFF; // 16-я (префикс 0x)
|
||||
int binary = 0b1111_1111; // 2-я (префикс 0b)
|
||||
int octal = 0377; // 8-я (ведущий 0)
|
||||
|
||||
// Подчёркивания для читаемости
|
||||
int million = 1_000_000;
|
||||
```
|
||||
|
||||
**Константы** (`final`) — значение нельзя изменить после инициализации:
|
||||
|
||||
```java
|
||||
final int MAX_SCORE = 100;
|
||||
// MAX_SCORE = 200; // ошибка компиляции
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Ввод целых чисел (класс `Scanner`)
|
||||
|
||||
Самый простой способ — `java.util.Scanner`.
|
||||
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class InputDemo {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
|
||||
System.out.print("Введите целое число: ");
|
||||
int n = sc.nextInt(); // читает int
|
||||
|
||||
System.out.print("Введите длинное число: ");
|
||||
long L = sc.nextLong(); // читает long
|
||||
|
||||
System.out.print("Введите байт: ");
|
||||
byte b = sc.nextByte();
|
||||
|
||||
System.out.println(String.format("Вы ввели: %d, %d, %d", n, L, b));
|
||||
sc.close();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Для чтения из файла/строки можно использовать `Scanner(new File("input.txt"))` или `BufferedReader`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Вывод целых чисел
|
||||
|
||||
```java
|
||||
int x = 42;
|
||||
|
||||
// Если нужно вывести только число — подходит обычный println:
|
||||
System.out.println(x); // 42
|
||||
|
||||
// Когда нужен текст или форматирование — String.format:
|
||||
System.out.println(String.format("x = %d", x));
|
||||
|
||||
// Форматирование в разных системах счисления:
|
||||
System.out.println(String.format("hex = %x, bin = %s",
|
||||
255, Integer.toBinaryString(255)));
|
||||
// hex = ff, bin = 11111111
|
||||
|
||||
// Выравнивание и ширина поля:
|
||||
System.out.println(String.format("|%5d|", 42)); // | 42|
|
||||
System.out.println(String.format("|%-5d|", 42)); // |42 |
|
||||
System.out.println(String.format("|%05d|", 42)); // |00042|
|
||||
```
|
||||
|
||||
Часто используемые спецификаторы `String.format`:
|
||||
|
||||
| Спецификатор | Смысл |
|
||||
|--------------|-------|
|
||||
| `%d` | целое в 10-й системе |
|
||||
| `%x` | 16-я система |
|
||||
| `%o` | 8-я система |
|
||||
| `%05d` | целое с ведущими нулями, ширина 5 |
|
||||
| `%n` | перевод строки (переносимый) |
|
||||
|
||||
---
|
||||
|
||||
## 6. Основные операции
|
||||
|
||||
### 6.1 Арифметические
|
||||
|
||||
```java
|
||||
int a = 17, b = 5;
|
||||
System.out.println(a + b); // 22
|
||||
System.out.println(a - b); // 12
|
||||
System.out.println(a * b); // 85
|
||||
System.out.println(a / b); // 3 — ЦЕЛОЧИСЛЕННОЕ деление
|
||||
System.out.println(a % b); // 2 — остаток от деления
|
||||
```
|
||||
|
||||
> ⚠️ Деление целых чисел **отбрасывает дробную часть**, а не округляет: `7 / 2 == 3`, `-7 / 2 == -3` (округление к нулю).
|
||||
|
||||
### 6.2 Операции присваивания
|
||||
|
||||
```java
|
||||
int x = 10;
|
||||
x += 5; // x = 15
|
||||
x -= 3; // x = 12
|
||||
x *= 2; // x = 24
|
||||
x /= 4; // x = 6
|
||||
x %= 4; // x = 2
|
||||
x++; // x = 3
|
||||
x--; // x = 2
|
||||
```
|
||||
|
||||
### 6.3 Сравнение
|
||||
|
||||
```java
|
||||
int p = 5, q = 7;
|
||||
boolean r1 = p == q; // false
|
||||
boolean r2 = p != q; // true
|
||||
boolean r3 = p < q; // true
|
||||
boolean r4 = p >= q; // false
|
||||
```
|
||||
|
||||
### 6.4 Побитовые операции
|
||||
|
||||
```java
|
||||
int m = 0b1100; // 12
|
||||
int n = 0b1010; // 10
|
||||
System.out.println(m & n); // 8
|
||||
System.out.println(m | n); // 14
|
||||
System.out.println(m ^ n); // 6
|
||||
System.out.println(~m); // -13
|
||||
System.out.println(m << 1); // 24 (сдвиг влево = ×2)
|
||||
System.out.println(m >> 1); // 6 (сдвиг вправо)
|
||||
System.out.println(m >>> 1); // 6 (беззнаковый сдвиг)
|
||||
```
|
||||
|
||||
### 6.5 Приведение типов
|
||||
|
||||
**Автоматическое** (расширяющее) — от меньшего к большему:
|
||||
|
||||
```java
|
||||
byte b = 100;
|
||||
int i = b; // ок
|
||||
long l = i; // ок
|
||||
```
|
||||
|
||||
**Явное** (сужающее) — от большего к меньшему, возможна потеря данных:
|
||||
|
||||
```java
|
||||
int big = 300;
|
||||
byte small = (byte) big; // 300 % 256 = 44 (переполнение)
|
||||
```
|
||||
|
||||
**Переполнение** — опасная ситуация: `int` не может выйти за пределы диапазона и «зацикливается»:
|
||||
|
||||
```java
|
||||
int max = Integer.MAX_VALUE;
|
||||
System.out.println(max + 1); // -2147483648
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Критерии применимости целых чисел
|
||||
|
||||
Используйте целочисленный тип, если:
|
||||
|
||||
1. **Величина по своей природе дискретна** — количество, индекс, счётчик.
|
||||
2. **Нужна точность без округлений** — деньги (лучше в копейках), ID, временные метки.
|
||||
3. **Выполняются операции над целыми** — деление нацело, остаток, битовые сдвиги.
|
||||
4. **Важна производительность** — целочисленная арифметика быстрее вещественной.
|
||||
5. **Нужна экономия памяти** — например, `byte[]` для большого массива.
|
||||
|
||||
**Не используйте целые числа**, если:
|
||||
|
||||
- величина непрерывна (расстояние, температура, вес) — берите `double`/`float`;
|
||||
- нужна высокая точность над дробными числами — `BigDecimal`.
|
||||
|
||||
**Выбор типа:**
|
||||
|
||||
- по умолчанию — `int`;
|
||||
- если значения > 2·10⁹ или работа со временем в мс — `long`;
|
||||
- для больших массивов малых чисел — `byte`/`short`;
|
||||
- для чисел, не помещающихся ни в один примитив (> 9.2·10¹⁸) — `BigInteger`.
|
||||
|
||||
---
|
||||
|
||||
## 8. Классы стандартной библиотеки
|
||||
|
||||
### 8.1 Классы-обёртки: `Integer`, `Long`, `Short`, `Byte`
|
||||
|
||||
Каждому примитиву соответствует класс-обёртка. Нужен для:
|
||||
|
||||
- хранения в коллекциях (`ArrayList<Integer>`);
|
||||
- использования полезных методов;
|
||||
- `null`-значений (например, «значение отсутствует»).
|
||||
|
||||
```java
|
||||
Integer obj = 42; // автоупаковка (autoboxing)
|
||||
int prim = obj; // автораспаковка (unboxing)
|
||||
|
||||
// Полезные методы (там, где выводится только число — println):
|
||||
System.out.println(Integer.MAX_VALUE); // 2147483647
|
||||
System.out.println(Integer.MIN_VALUE); // -2147483648
|
||||
System.out.println(Integer.parseInt("123")); // 123
|
||||
System.out.println(Integer.compare(3, 5)); // -1
|
||||
System.out.println(Integer.max(3, 5)); // 5
|
||||
System.out.println(Integer.sum(3, 5)); // 8
|
||||
System.out.println(Integer.bitCount(7)); // 3
|
||||
System.out.println(Integer.numberOfLeadingZeros(1)); // 31
|
||||
|
||||
// Там, где результат — строка — String.format:
|
||||
System.out.println(String.format("%s", Integer.toBinaryString(10))); // 1010
|
||||
System.out.println(String.format("%s", Integer.toHexString(255))); // ff
|
||||
```
|
||||
|
||||
> ⚠️ Сравнивайте объекты-обёртки через `.equals()`, а не `==`:
|
||||
> ```java
|
||||
> Integer a = 1000, b = 1000;
|
||||
> System.out.println(a == b); // false (разные объекты)
|
||||
> System.out.println(a.equals(b)); // true
|
||||
> ```
|
||||
> Кэш `Integer` работает только для значений от −128 до 127, поэтому `Integer a = 100; Integer b = 100; a == b` даст `true`, но для 1000 — уже `false`.
|
||||
|
||||
### 8.2 `BigInteger` — для чисел произвольной длины
|
||||
|
||||
Когда `long` недостаточно (факториалы, криптография, длинная арифметика):
|
||||
|
||||
```java
|
||||
import java.math.BigInteger;
|
||||
|
||||
BigInteger a = new BigInteger("123456789012345678901234567890");
|
||||
BigInteger b = BigInteger.valueOf(987654321L);
|
||||
|
||||
System.out.println(a.add(b)); // сложение
|
||||
System.out.println(a.subtract(b)); // вычитание
|
||||
System.out.println(a.multiply(b)); // умножение
|
||||
System.out.println(a.divide(b)); // деление
|
||||
System.out.println(a.mod(b)); // остаток
|
||||
System.out.println(a.pow(2)); // возведение в степень
|
||||
System.out.println(a.gcd(b)); // НОД
|
||||
|
||||
// Факториал 100:
|
||||
BigInteger fact = BigInteger.ONE;
|
||||
for (int i = 2; i <= 100; i++)
|
||||
fact = fact.multiply(BigInteger.valueOf(i));
|
||||
System.out.println(fact);
|
||||
```
|
||||
|
||||
`BigInteger` **иммутабелен** — операции возвращают новый объект, а не меняют исходный.
|
||||
|
||||
### 8.3 `Math` — математические функции
|
||||
|
||||
Работает с `double`, но есть методы и для целых:
|
||||
|
||||
```java
|
||||
System.out.println(Math.abs(-7)); // 7
|
||||
System.out.println(Math.max(3, 8)); // 8
|
||||
System.out.println(Math.min(3, 8)); // 3
|
||||
|
||||
// Math.pow / Math.sqrt возвращают double — для форматирования используем String.format:
|
||||
System.out.println(String.format("%.1f", Math.pow(2, 10))); // 1024.0
|
||||
System.out.println(String.format("%.1f", Math.sqrt(144))); // 12.0
|
||||
```
|
||||
|
||||
### 8.4 `Random` — генерация случайных чисел
|
||||
|
||||
```java
|
||||
import java.util.Random;
|
||||
|
||||
Random rnd = new Random();
|
||||
int r1 = rnd.nextInt(); // любое int
|
||||
int r2 = rnd.nextInt(100); // [0, 100)
|
||||
int r3 = rnd.nextInt(50) + 1; // [1, 50]
|
||||
|
||||
System.out.println(r2);
|
||||
System.out.println(r3);
|
||||
|
||||
// Начиная с Java 17 — RandomGenerator:
|
||||
// int r = java.util.random.RandomGenerator.getDefault().nextInt(1, 101);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Мини-пример: сумма цифр числа
|
||||
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class SumDigits {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
System.out.print("Введите целое число: ");
|
||||
long n = Math.abs(sc.nextLong());
|
||||
|
||||
int sum = 0;
|
||||
while (n > 0) {
|
||||
sum += (int)(n % 10); // последняя цифра
|
||||
n /= 10; // отбрасываем её
|
||||
}
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Здесь задействованы: `long`, `%` и `/`, приведение типов, ввод/вывод, `Math.abs`.
|
||||
|
||||
---
|
||||
|
||||
## 10. Типичные ошибки
|
||||
|
||||
| Ошибка | Как избежать |
|
||||
|--------|--------------|
|
||||
| Деление нацело вместо дробного | Привести один операнд: `(double) a / b` |
|
||||
| Переполнение `int` | Использовать `long` или `Math.addExact` (бросает исключение) |
|
||||
| Сравнение обёрток через `==` | Использовать `.equals()` |
|
||||
| Забыть `L` у большого литерала | `long x = 3000000000L;` |
|
||||
| `NullPointerException` при распаковке | Проверять на `null` перед присваиванием в примитив |
|
||||
| Потеря точности при `(int) longValue` | Проверять диапазон или использовать `Math.toIntExact` |
|
||||
|
||||
```java
|
||||
// Безопасные операции (Java 8+):
|
||||
int sum = Math.addExact(1_000_000_000, 1_000_000_000); // ArithmeticException
|
||||
int prod = Math.multiplyExact(100_000, 100_000); // исключение
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Итоги
|
||||
|
||||
- В Java 4 примитивных целочисленных типа; основной — `int`, для больших значений — `long`.
|
||||
- По умолчанию целые литералы — `int`, для `long` нужен суффикс `L`.
|
||||
- Деление целых **отбрасывает** дробную часть, остаток даёт `%`.
|
||||
- Для чисел > 9.2·10¹⁸ используйте `BigInteger`.
|
||||
- Для коллекций и `null` — классы-обёртки (`Integer`, `Long`, ...).
|
||||
- Всегда проверяйте возможность **переполнения** и корректность приведения типов.
|
||||
|
||||
@@ -0,0 +1,267 @@
|
||||
<h1 id="задач-по-теме-целые-числа-на-java">10 задач по теме «Целые
|
||||
числа» на Java</h1>
|
||||
<p>Все решения используют только арифметические операторы
|
||||
(<code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>,
|
||||
<code>%</code>) и стандартный ввод/вывод. Без <code>if</code>,
|
||||
<code>for</code>, <code>while</code>, <code>switch</code> и без создания
|
||||
собственных функций.</p>
|
||||
<hr />
|
||||
<h2 id="задача-1.-сумма-и-произведение-цифр-двузначного-числа">Задача 1.
|
||||
Сумма и произведение цифр двузначного числа</h2>
|
||||
<p><strong>Условие:</strong> Дано двузначное число. Найти сумму и
|
||||
произведение его цифр.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>47</td>
|
||||
<td>11 28</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb1"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task1 <span class="op">{</span></span>
|
||||
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> a <span class="op">=</span> n <span class="op">/</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> b <span class="op">=</span> n <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>a <span class="op">+</span> b<span class="op">);</span></span>
|
||||
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>a <span class="op">*</span> b<span class="op">);</span></span>
|
||||
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-2.-число-обратное-двузначному">Задача 2. Число, обратное
|
||||
двузначному</h2>
|
||||
<p><strong>Условие:</strong> Дано двузначное число. Получить число,
|
||||
записанное теми же цифрами в обратном порядке.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>47</td>
|
||||
<td>74</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb2"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task2 <span class="op">{</span></span>
|
||||
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> result <span class="op">=</span> <span class="op">(</span>n <span class="op">%</span> <span class="dv">10</span><span class="op">)</span> <span class="op">*</span> <span class="dv">10</span> <span class="op">+</span> <span class="op">(</span>n <span class="op">/</span> <span class="dv">10</span><span class="op">);</span></span>
|
||||
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>result<span class="op">);</span></span>
|
||||
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-3.-сумма-цифр-трёхзначного-числа">Задача 3. Сумма цифр
|
||||
трёхзначного числа</h2>
|
||||
<p><strong>Условие:</strong> Дано трёхзначное число. Найти сумму его
|
||||
цифр.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>385</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb3"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task3 <span class="op">{</span></span>
|
||||
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> sum <span class="op">=</span> n <span class="op">/</span> <span class="dv">100</span> <span class="op">+</span> <span class="op">(</span>n <span class="op">/</span> <span class="dv">10</span><span class="op">)</span> <span class="op">%</span> <span class="dv">10</span> <span class="op">+</span> n <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>sum<span class="op">);</span></span>
|
||||
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-4.-перевод-секунд-в-часы-минуты-и-секунды">Задача 4.
|
||||
Перевод секунд в часы, минуты и секунды</h2>
|
||||
<p><strong>Условие:</strong> Дано целое число секунд <code>t</code>.
|
||||
Перевести в часы, минуты и секунды.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>7265</td>
|
||||
<td>2 1 5</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb4"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task4 <span class="op">{</span></span>
|
||||
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> t <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> h <span class="op">=</span> t <span class="op">/</span> <span class="dv">3600</span><span class="op">;</span></span>
|
||||
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> m <span class="op">=</span> <span class="op">(</span>t <span class="op">%</span> <span class="dv">3600</span><span class="op">)</span> <span class="op">/</span> <span class="dv">60</span><span class="op">;</span></span>
|
||||
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> s <span class="op">=</span> t <span class="op">%</span> <span class="dv">60</span><span class="op">;</span></span>
|
||||
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>h<span class="op">);</span></span>
|
||||
<span id="cb4-11"><a href="#cb4-11" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>m<span class="op">);</span></span>
|
||||
<span id="cb4-12"><a href="#cb4-12" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>s<span class="op">);</span></span>
|
||||
<span id="cb4-13"><a href="#cb4-13" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb4-14"><a href="#cb4-14" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-5.-последняя-цифра-числа-в-степени">Задача 5. Последняя
|
||||
цифра числа в степени</h2>
|
||||
<p><strong>Условие:</strong> Дано число <code>n</code>. Найти последнюю
|
||||
цифру числа <code>n²</code>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>37</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb5"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task5 <span class="op">{</span></span>
|
||||
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> last <span class="op">=</span> n <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">((</span>last <span class="op">*</span> last <span class="op">*</span> last <span class="op">*</span> last<span class="op">)</span> <span class="op">%</span> <span class="dv">10</span><span class="op">);</span></span>
|
||||
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2
|
||||
id="задача-7.-обмен-цифр-трёхзначного-числа-циклический-сдвиг">Задача 7.
|
||||
Обмен цифр трёхзначного числа (циклический сдвиг)</h2>
|
||||
<p><strong>Условие:</strong> Дано трёхзначное число <code>abc</code>.
|
||||
Получить число <code>bca</code> (первую цифру в конец).</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>385</td>
|
||||
<td>853</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb6"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task7 <span class="op">{</span></span>
|
||||
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> a <span class="op">=</span> n <span class="op">/</span> <span class="dv">100</span><span class="op">;</span></span>
|
||||
<span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> b <span class="op">=</span> <span class="op">(</span>n <span class="op">/</span> <span class="dv">10</span><span class="op">)</span> <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb6-9"><a href="#cb6-9" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> c <span class="op">=</span> n <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb6-10"><a href="#cb6-10" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> result <span class="op">=</span> b <span class="op">*</span> <span class="dv">100</span> <span class="op">+</span> c <span class="op">*</span> <span class="dv">10</span> <span class="op">+</span> a<span class="op">;</span></span>
|
||||
<span id="cb6-11"><a href="#cb6-11" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>result<span class="op">);</span></span>
|
||||
<span id="cb6-12"><a href="#cb6-12" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb6-13"><a href="#cb6-13" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-8.-сумма-цифр-четырёхзначного-числа">Задача 8. Сумма цифр
|
||||
четырёхзначного числа</h2>
|
||||
<p><strong>Условие:</strong> Дано четырёхзначное число. Найти сумму его
|
||||
цифр.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1234</td>
|
||||
<td>10</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb7"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task8 <span class="op">{</span></span>
|
||||
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> n <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> sum <span class="op">=</span> n <span class="op">/</span> <span class="dv">1000</span> <span class="op">+</span> <span class="op">(</span>n <span class="op">/</span> <span class="dv">100</span><span class="op">)</span> <span class="op">%</span> <span class="dv">10</span> <span class="op">+</span> <span class="op">(</span>n <span class="op">/</span> <span class="dv">10</span><span class="op">)</span> <span class="op">%</span> <span class="dv">10</span> <span class="op">+</span> n <span class="op">%</span> <span class="dv">10</span><span class="op">;</span></span>
|
||||
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>sum<span class="op">);</span></span>
|
||||
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
<hr />
|
||||
<h2 id="задача-9.-количество-полных-минут-в-сутках">Задача 9. Количество
|
||||
полных минут в сутках</h2>
|
||||
<p><strong>Условие:</strong> Дано число минут <code>m</code>. Найти
|
||||
количество полных суток и остаток минут.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>Ввод:</strong></th>
|
||||
<th><strong>Вывод:</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>5000</td>
|
||||
<td>3 680</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><strong>Решение:</strong></p>
|
||||
<div class="sourceCode" id="cb8"><pre
|
||||
class="sourceCode java"><code class="sourceCode java"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">util</span><span class="op">.</span><span class="im">Scanner</span><span class="op">;</span></span>
|
||||
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a></span>
|
||||
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Task9 <span class="op">{</span></span>
|
||||
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="op">{</span></span>
|
||||
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a> <span class="bu">Scanner</span> sc <span class="op">=</span> <span class="kw">new</span> <span class="bu">Scanner</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">);</span></span>
|
||||
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> m <span class="op">=</span> sc<span class="op">.</span><span class="fu">nextInt</span><span class="op">();</span></span>
|
||||
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> days <span class="op">=</span> m <span class="op">/</span> <span class="dv">1440</span><span class="op">;</span></span>
|
||||
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> rest <span class="op">=</span> m <span class="op">%</span> <span class="dv">1440</span><span class="op">;</span></span>
|
||||
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>days<span class="op">);</span></span>
|
||||
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span>rest<span class="op">);</span></span>
|
||||
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
|
||||
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
|
||||
@@ -0,0 +1,210 @@
|
||||
# 10 задач по теме «Целые числа» на Java
|
||||
|
||||
Все решения используют только арифметические операторы (`+`, `-`, `*`, `/`, `%`) и стандартный ввод/вывод. Без `if`, `for`, `while`, `switch` и без создания собственных функций.
|
||||
|
||||
---
|
||||
|
||||
## Задача 1. Сумма и произведение цифр двузначного числа
|
||||
|
||||
**Условие:** Дано двузначное число. Найти сумму и произведение его цифр.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 47 | 11 28 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task1 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 10;
|
||||
int b = n % 10;
|
||||
System.out.println(a + b);
|
||||
System.out.println(a * b);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 2. Число, обратное двузначному
|
||||
|
||||
**Условие:** Дано двузначное число. Получить число, записанное теми же цифрами в обратном порядке.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 47 | 74 |
|
||||
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task2 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int result = (n % 10) * 10 + (n / 10);
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 3. Сумма цифр трёхзначного числа
|
||||
|
||||
**Условие:** Дано трёхзначное число. Найти сумму его цифр.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 385 | 16 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task3 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 100 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 4. Перевод секунд в часы, минуты и секунды
|
||||
|
||||
**Условие:** Дано целое число секунд `t`. Перевести в часы, минуты и секунды.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 7265 | 2 1 5 |
|
||||
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task4 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int t = sc.nextInt();
|
||||
int h = t / 3600;
|
||||
int m = (t % 3600) / 60;
|
||||
int s = t % 60;
|
||||
System.out.println(h);
|
||||
System.out.println(m);
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 5. Последняя цифра числа в степени
|
||||
|
||||
**Условие:** Дано число `n`. Найти последнюю цифру числа `n²`.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 37 | |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task5 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int last = n % 10;
|
||||
System.out.println((last * last * last * last) % 10);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 7. Обмен цифр трёхзначного числа (циклический сдвиг)
|
||||
|
||||
**Условие:** Дано трёхзначное число `abc`. Получить число `bca` (первую цифру в конец).
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 385 | 853 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task7 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 100;
|
||||
int b = (n / 10) % 10;
|
||||
int c = n % 10;
|
||||
int result = b * 100 + c * 10 + a;
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 8. Сумма цифр четырёхзначного числа
|
||||
|
||||
**Условие:** Дано четырёхзначное число. Найти сумму его цифр.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 1234 | 10 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task8 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 1000 + (n / 100) % 10 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 9. Количество полных минут в сутках
|
||||
|
||||
**Условие:** Дано число минут `m`. Найти количество полных суток и остаток минут.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 5000 | 3 680 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task9 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int m = sc.nextInt();
|
||||
int days = m / 1440;
|
||||
int rest = m % 1440;
|
||||
System.out.println(days);
|
||||
System.out.println(rest);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
# 10 задач по теме «Целые числа» на Java
|
||||
|
||||
Все решения используют только арифметические операторы (`+`, `-`, `*`,
|
||||
`/`, `%`) и стандартный ввод/вывод. Без `if`, `for`, `while`, `switch` и
|
||||
без создания собственных функций.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 1. Сумма и произведение цифр двузначного числа
|
||||
|
||||
**Условие:** Дано двузначное число. Найти сумму и произведение его цифр.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
47 11 28
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task1 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 10;
|
||||
int b = n % 10;
|
||||
System.out.println(a + b);
|
||||
System.out.println(a * b);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 2. Число, обратное двузначному
|
||||
|
||||
**Условие:** Дано двузначное число. Получить число, записанное теми же
|
||||
цифрами в обратном порядке.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
47 74
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task2 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int result = (n % 10) * 10 + (n / 10);
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 3. Сумма цифр трёхзначного числа
|
||||
|
||||
**Условие:** Дано трёхзначное число. Найти сумму его цифр.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
385 16
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task3 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 100 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 4. Перевод секунд в часы, минуты и секунды
|
||||
|
||||
**Условие:** Дано целое число секунд `t`. Перевести в часы, минуты и
|
||||
секунды.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
7265 2 1 5
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task4 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int t = sc.nextInt();
|
||||
int h = t / 3600;
|
||||
int m = (t % 3600) / 60;
|
||||
int s = t % 60;
|
||||
System.out.println(h);
|
||||
System.out.println(m);
|
||||
System.out.println(s);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 5. Последняя цифра числа в степени
|
||||
|
||||
**Условие:** Дано число `n`. Найти последнюю цифру числа `n²`.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
37
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task5 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int last = n % 10;
|
||||
System.out.println((last * last * last * last) % 10);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 7. Обмен цифр трёхзначного числа (циклический сдвиг)
|
||||
|
||||
**Условие:** Дано трёхзначное число `abc`. Получить число `bca` (первую
|
||||
цифру в конец).
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
385 853
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task7 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 100;
|
||||
int b = (n / 10) % 10;
|
||||
int c = n % 10;
|
||||
int result = b * 100 + c * 10 + a;
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 8. Сумма цифр четырёхзначного числа
|
||||
|
||||
**Условие:** Дано четырёхзначное число. Найти сумму его цифр.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
1234 10
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task8 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 1000 + (n / 100) % 10 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
## Задача 9. Количество полных минут в сутках
|
||||
|
||||
**Условие:** Дано число минут `m`. Найти количество полных суток и
|
||||
остаток минут.
|
||||
|
||||
**Ввод:** **Вывод:**
|
||||
----------- ------------
|
||||
5000 3 680
|
||||
|
||||
**Решение:**
|
||||
|
||||
``` java
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Task9 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int m = sc.nextInt();
|
||||
int days = m / 1440;
|
||||
int rest = m % 1440;
|
||||
System.out.println(days);
|
||||
System.out.println(rest);
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,377 @@
|
||||
<?xml version='1.0' ?>
|
||||
<Pandoc api-version="1,23,1,2">
|
||||
<meta />
|
||||
<blocks>
|
||||
<Header id="задач-по-теме-целые-числа-на-java" level="1">10 задач по теме «Целые числа» на Java</Header>
|
||||
<Para>Все решения используют только арифметические операторы (<Code>+</Code>, <Code>-</Code>, <Code>*</Code>, <Code>/</Code>, <Code>%</Code>) и стандартный ввод/вывод. Без <Code>if</Code>, <Code>for</Code>, <Code>while</Code>, <Code>switch</Code> и без создания собственных функций.</Para>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-1.-сумма-и-произведение-цифр-двузначного-числа" level="2">Задача 1. Сумма и произведение цифр двузначного числа</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано двузначное число. Найти сумму и произведение его цифр.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>47</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>11 28</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task1 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 10;
|
||||
int b = n % 10;
|
||||
System.out.println(a + b);
|
||||
System.out.println(a * b);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-2.-число-обратное-двузначному" level="2">Задача 2. Число, обратное двузначному</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано двузначное число. Получить число, записанное теми же цифрами в обратном порядке.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>47</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>74</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task2 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int result = (n % 10) * 10 + (n / 10);
|
||||
System.out.println(result);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-3.-сумма-цифр-трёхзначного-числа" level="2">Задача 3. Сумма цифр трёхзначного числа</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано трёхзначное число. Найти сумму его цифр.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>385</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>16</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task3 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 100 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-4.-перевод-секунд-в-часы-минуты-и-секунды" level="2">Задача 4. Перевод секунд в часы, минуты и секунды</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано целое число секунд <Code>t</Code>. Перевести в часы, минуты и секунды.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>7265</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>2 1 5</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task4 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int t = sc.nextInt();
|
||||
int h = t / 3600;
|
||||
int m = (t % 3600) / 60;
|
||||
int s = t % 60;
|
||||
System.out.println(h);
|
||||
System.out.println(m);
|
||||
System.out.println(s);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-5.-последняя-цифра-числа-в-степени" level="2">Задача 5. Последняя цифра числа в степени</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано число <Code>n</Code>. Найти последнюю цифру числа <Code>n²</Code>.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>37</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault" />
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task5 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int last = n % 10;
|
||||
System.out.println((last * last * last * last) % 10);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-7.-обмен-цифр-трёхзначного-числа-циклический-сдвиг" level="2">Задача 7. Обмен цифр трёхзначного числа (циклический сдвиг)</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано трёхзначное число <Code>abc</Code>. Получить число <Code>bca</Code> (первую цифру в конец).</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>385</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>853</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task7 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int a = n / 100;
|
||||
int b = (n / 10) % 10;
|
||||
int c = n % 10;
|
||||
int result = b * 100 + c * 10 + a;
|
||||
System.out.println(result);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-8.-сумма-цифр-четырёхзначного-числа" level="2">Задача 8. Сумма цифр четырёхзначного числа</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано четырёхзначное число. Найти сумму его цифр.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>1234</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>10</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task8 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int n = sc.nextInt();
|
||||
int sum = n / 1000 + (n / 100) % 10 + (n / 10) % 10 + n % 10;
|
||||
System.out.println(sum);
|
||||
}
|
||||
}</CodeBlock>
|
||||
<HorizontalRule />
|
||||
<Header id="задача-9.-количество-полных-минут-в-сутках" level="2">Задача 9. Количество полных минут в сутках</Header>
|
||||
<Para><Strong>Условие:</Strong> Дано число минут <Code>m</Code>. Найти количество полных суток и остаток минут.</Para>
|
||||
<Table>
|
||||
<Caption />
|
||||
<colspecs>
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
<ColSpec alignment="AlignDefault" col-width="0" />
|
||||
</colspecs>
|
||||
<TableHead>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Ввод:</Strong></Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain><Strong>Вывод:</Strong></Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</TableHead>
|
||||
<TableBody row-head-columns="0">
|
||||
<header />
|
||||
<body>
|
||||
<Row>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>5000</Plain>
|
||||
</Cell>
|
||||
<Cell alignment="AlignDefault">
|
||||
<Plain>3 680</Plain>
|
||||
</Cell>
|
||||
</Row>
|
||||
</body>
|
||||
</TableBody>
|
||||
<TableFoot />
|
||||
</Table>
|
||||
<Para><Strong>Решение:</Strong></Para>
|
||||
<CodeBlock class="java">import java.util.Scanner;
|
||||
|
||||
public class Task9 {
|
||||
public static void main(String[] args) {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
int m = sc.nextInt();
|
||||
int days = m / 1440;
|
||||
int rest = m % 1440;
|
||||
System.out.println(days);
|
||||
System.out.println(rest);
|
||||
}
|
||||
}</CodeBlock>
|
||||
</blocks>
|
||||
</Pandoc>
|
||||
@@ -0,0 +1,175 @@
|
||||
# Задачи по побитовым операциям на Java
|
||||
|
||||
> **Условие:** без использования операторов выбора (`if`, `switch`, `?:`), циклов (`for`, `while`, `do`) и объявления новых функций. Только `main`, побитовые операции, арифметика и `System.out.println`.
|
||||
|
||||
---
|
||||
|
||||
## Задача 1. Умножить число на 4 без умножения
|
||||
|
||||
**Условие:** Дано целое число `n`. Получить `n * 4`, используя только побитовые операции.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 5 | 20 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task1 {
|
||||
public static void main(String[] args) {
|
||||
int n = 5;
|
||||
int result = n << 2; // сдвиг влево на 2 = умножение на 4
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 2. Разделить число на 2 без деления
|
||||
|
||||
**Условие:** Дано целое число `n`. Получить `n / 2`, используя только побитовые операции.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 20 | 10 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task2 {
|
||||
public static void main(String[] args) {
|
||||
int n = 20;
|
||||
int result = n >> 1; // сдвиг вправо на 1 = деление на 2
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 3. Проверить, чётное ли число
|
||||
|
||||
**Условие:** Дано целое число `n`. Вывести `1`, если оно чётное, и `0`, если нечётное.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 7 | 0 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task3 {
|
||||
public static void main(String[] args) {
|
||||
int n = 7;
|
||||
int result = (n & 1) ^ 1; // если младший бит 1 → 0, иначе → 1
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 4. Обнулить младший бит
|
||||
|
||||
**Условие:** Дано целое число `n`. Обнулить его самый младший установленный бит.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 12 | 8 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task4 {
|
||||
public static void main(String[] args) {
|
||||
int n = 12;
|
||||
int result = n & (n - 1); // трюк: убирает младший установленный бит
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 5. Установить k-й бит в 1
|
||||
|
||||
**Условие:** Даны число `n` и позиция `k` (нумерация с 0). Установить `k`-й бит в 1.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 8 2 | 12 |
|
||||
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task6 {
|
||||
public static void main(String[] args) {
|
||||
int n = 8; // 1000
|
||||
int k = 2;
|
||||
int result = n | (1 << k); // 1000 | 0100 = 1100 = 12
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 6. Инвертировать k-й бит
|
||||
|
||||
**Условие:** Даны число `n` и позиция `k`. Инвертировать `k`-й бит.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 10 1 | 8 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task7 {
|
||||
public static void main(String[] args) {
|
||||
int n = 10; // 1010
|
||||
int k = 1;
|
||||
int result = n ^ (1 << k); // 1010 ^ 0010 = 1000 = 8
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 7. Умножить число на 5 без умножения
|
||||
|
||||
**Условие:** Дано целое число `n`. Получить `n * 5`, используя только сдвиги и сложение.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 7 | 35 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task10 {
|
||||
public static void main(String[] args) {
|
||||
int n = 7;
|
||||
int result = (n << 2) + n; // 4n + n = 5n
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Задача 8. Умножить число на 3 без умножения
|
||||
|
||||
**Условие:** Дано целое число `n`. Получить `n * 3`, используя только сдвиги и сложение.
|
||||
|
||||
|**Ввод:** |**Вывод:**|
|
||||
|--|--|
|
||||
| 7 | 21 |
|
||||
|
||||
**Решение:**
|
||||
```java
|
||||
public class Task10 {
|
||||
public static void main(String[] args) {
|
||||
int n = 7;
|
||||
int result = (n << 1) + n; // 2n + n = 3n
|
||||
System.out.println(result);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -5,4 +5,10 @@ root := justfile_directory()
|
||||
|
||||
[working-directory: 'src/tasks_to_mdl']
|
||||
xml-to-dataclasses:
|
||||
uv run xsdata generate --package gen --include-header {{ root }}/input/nothing.xml
|
||||
uv run xsdata generate --package mdl --include-header {{ root }}/input/nothing.xml
|
||||
|
||||
[working-directory: 'src/tasks_to_mdl']
|
||||
pandoc-to-dataclasses:
|
||||
uv run xsdata generate --package pandoc --include-header {{ root }}/input/problems.xml
|
||||
|
||||
gen-dataclasses: pandoc-to-dataclasses xml-to-dataclasses
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 16:00:22
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 19:25:20
|
||||
|
||||
Generator: DataclassGenerator
|
||||
See: https://xsdata.readthedocs.io/
|
||||
"""
|
||||
|
||||
from gen.quiz import (
|
||||
from mdl.quiz import (
|
||||
Display,
|
||||
Expected,
|
||||
Extra,
|
||||
@@ -1,4 +1,4 @@
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 16:00:22
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 19:25:20
|
||||
|
||||
Generator: DataclassGenerator
|
||||
See: https://xsdata.readthedocs.io/
|
||||
@@ -0,0 +1,39 @@
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 19:25:20
|
||||
|
||||
Generator: DataclassGenerator
|
||||
See: https://xsdata.readthedocs.io/
|
||||
"""
|
||||
|
||||
from pandoc.pandoc import (
|
||||
Blocks,
|
||||
Body,
|
||||
Cell,
|
||||
CodeBlock,
|
||||
ColSpec,
|
||||
Colspecs,
|
||||
Header,
|
||||
Pandoc,
|
||||
Para,
|
||||
Plain,
|
||||
Row,
|
||||
Table,
|
||||
TableBody,
|
||||
TableHead,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"Cell",
|
||||
"CodeBlock",
|
||||
"ColSpec",
|
||||
"Header",
|
||||
"Pandoc",
|
||||
"Para",
|
||||
"Plain",
|
||||
"Row",
|
||||
"Table",
|
||||
"TableBody",
|
||||
"TableHead",
|
||||
"Blocks",
|
||||
"Body",
|
||||
"Colspecs",
|
||||
]
|
||||
@@ -0,0 +1,293 @@
|
||||
"""This file was generated by xsdata, v26.2, on 2026-09-14 19:25:20
|
||||
|
||||
Generator: DataclassGenerator
|
||||
See: https://xsdata.readthedocs.io/
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from typing import ForwardRef
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class CodeBlock:
|
||||
class_value: str = field(
|
||||
metadata={
|
||||
"name": "class",
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
value: str = field(default="")
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class ColSpec:
|
||||
alignment: str = field(
|
||||
metadata={
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
col_width: int = field(
|
||||
metadata={
|
||||
"name": "col-width",
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Header:
|
||||
id: str = field(
|
||||
metadata={
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
level: int = field(
|
||||
metadata={
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
value: str = field(default="")
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Para:
|
||||
content: list[object] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"type": "Wildcard",
|
||||
"namespace": "##any",
|
||||
"mixed": True,
|
||||
"choices": (
|
||||
{
|
||||
"name": "Strong",
|
||||
"type": ForwardRef("Para.Strong"),
|
||||
},
|
||||
{
|
||||
"name": "Code",
|
||||
"type": ForwardRef("Para.Code"),
|
||||
},
|
||||
{
|
||||
"type": ForwardRef("Para.Value"),
|
||||
},
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Strong:
|
||||
value: str = field(default="")
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Code:
|
||||
value: str = field(default="")
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Value:
|
||||
value: str = field(default="")
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Plain:
|
||||
strong: str = field(
|
||||
metadata={
|
||||
"name": "Strong",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Cell:
|
||||
alignment: str = field(
|
||||
metadata={
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
plain: None | str | int | Plain = field(
|
||||
default=None,
|
||||
metadata={
|
||||
"name": "Plain",
|
||||
"type": "Element",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Colspecs:
|
||||
class Meta:
|
||||
name = "colspecs"
|
||||
|
||||
col_spec: list[ColSpec] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "ColSpec",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Row:
|
||||
cell: list[Cell] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "Cell",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class TableHead:
|
||||
row: Row = field(
|
||||
metadata={
|
||||
"name": "Row",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Body:
|
||||
class Meta:
|
||||
name = "body"
|
||||
|
||||
row: Row = field(
|
||||
metadata={
|
||||
"name": "Row",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class TableBody:
|
||||
row_head_columns: int = field(
|
||||
metadata={
|
||||
"name": "row-head-columns",
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
header: None | object = field(
|
||||
default=None,
|
||||
metadata={
|
||||
"type": "Element",
|
||||
},
|
||||
)
|
||||
body: Body = field(
|
||||
metadata={
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Table:
|
||||
caption: None | object = field(
|
||||
default=None,
|
||||
metadata={
|
||||
"name": "Caption",
|
||||
"type": "Element",
|
||||
},
|
||||
)
|
||||
colspecs: Colspecs = field(
|
||||
metadata={
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
table_head: TableHead = field(
|
||||
metadata={
|
||||
"name": "TableHead",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
table_body: TableBody = field(
|
||||
metadata={
|
||||
"name": "TableBody",
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
table_foot: None | object = field(
|
||||
default=None,
|
||||
metadata={
|
||||
"name": "TableFoot",
|
||||
"type": "Element",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Blocks:
|
||||
class Meta:
|
||||
name = "blocks"
|
||||
|
||||
header: list[Header] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "Header",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
"sequence": 1,
|
||||
},
|
||||
)
|
||||
para: list[Para] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "Para",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
"sequence": 1,
|
||||
},
|
||||
)
|
||||
horizontal_rule: list[object] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "HorizontalRule",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
"sequence": 1,
|
||||
},
|
||||
)
|
||||
table: list[Table] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "Table",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
"sequence": 1,
|
||||
},
|
||||
)
|
||||
code_block: list[CodeBlock] = field(
|
||||
default_factory=list,
|
||||
metadata={
|
||||
"name": "CodeBlock",
|
||||
"type": "Element",
|
||||
"min_occurs": 1,
|
||||
"sequence": 1,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@dataclass(kw_only=True)
|
||||
class Pandoc:
|
||||
api_version: str = field(
|
||||
metadata={
|
||||
"name": "api-version",
|
||||
"type": "Attribute",
|
||||
}
|
||||
)
|
||||
meta: None | object = field(
|
||||
default=None,
|
||||
metadata={
|
||||
"type": "Element",
|
||||
},
|
||||
)
|
||||
blocks: Blocks = field(
|
||||
metadata={
|
||||
"type": "Element",
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user