Формат входных данных Входной поток содержит целое число x (100⩽x⩽999) . Формат выходных данных Программа должна вывести трёхзначное число~--- результат указанной перестановки цифр в числе x . Примеры входные данные выходные данные 321 231
Ответ нейросети
10 октября 2025 13:24
Задача говорит: дано трёхзначное число x (100 ≤ x ≤ 999). Нужно переставить цифры так, чтобы поменять местами сотни и десятки, а единицы оставить без изменений. Например, для 321 результат — 231.
Пошаговое решение (понятие задачи)
- Обозначим x как abc, где:
- a — цифра сотен (a = x // 100)
- b — цифра десятков (b = (x // 10) % 10)
- c — единицы (c = x % 10)
- После перестановки сотни и десятков число становится bac, то есть 100b + 10a + c.
- Важно: результат можно выводить как число, но если нужен именно трёхзначный вывод с сохранением ведущего нуля (например для 105 получить 015), лучше выводить как строку из цифр bac: s[1]s[0]s[2].
Если задача решать в практике программирования:
- Алгоритм работает за константное время O(1) и использует константное количество памяти.
Пример расчёта
- Вход: 321
- a = 3, b = 2, c = 1
- новый номер = 100b + 10a + c = 200 + 30 + 1 = 231
- или как строка: "3""2""1" -> "2""3""1" = 231 (строкой "231")
Варианты реализации (несколько языков)
- Python (строковый способ, сохраняющий три символа, включая возможный ведущий ноль)
Код: x = input().strip() print(x[1] + x[0] + x[2])
Преимущество: preserves leading zero, выводится exactly три символа.
- Python (арифметический способ, можно вывести как число)
- Код:
x = int(input())
a = x // 100
b = (x // 10) % 10
c = x % 10
Для вывода как строка из цифр:
print(f"{b}{a}{c}")Для вывода как обычного числа (может не быть трёхзначным, если b = 0):
print(100b + 10a + c)
- C++
Вариант A: работать со строкой (устойчив к ведущему нулю) #include <bits/stdc++.h> using namespace std; int main() { string s; if(!(cin >> s)) return 0; // предполагаем, что ввод содержит 3 символа cout << s[1] << s[0] << s[2]; return 0; }
Вариант B: работать с цифрами (вывод как три цифры, включая ведущий ноль) #include
using namespace std; int main() { int x; if(!(cin >> x)) return 0; int a = x / 100; int b = (x / 10) % 10; int c = x % 10; cout << b << a << c; // выводит 3 цифры подряд, например 015 для 105 return 0; }
Пояснения по крайним случаям
- Если входное число 105:
- a = 1, b = 0, c = 5
- результат: bac = 015
- Строковый вывод даст "015"; числовой вывод как число даст 15 (потеряется ведущий ноль). В задаче указано "трёхзначное число" — предпочтительно выводить строкой "015".
Итог
- Задача сводится к обмену первых двух цифр трёхзначного числа.
- Реализация зависит от того, нужно ли сохранять ведущий ноль в выводе. В зависимости от языка можно выбрать строковый подход (надежнее для трёхзначного вывода) или числовый (проще, но может убрать ведущий ноль).
Если хочешь, могу адаптировать решение под конкретный язык или формат вывода, который требуется в твоём задании.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



