Алгоритм: как перевернуть число?
также, 00001. Да и мне не понадобиться такое число, так как суть задания в проверке элегантности числа.
7 фев 2021 в 14:24
Тогда это не число, а строка из цифр. Console.WriteLine(new string(«51351».Reverse().ToArray())); или так Console.WriteLine(string.Concat(«51351».Reverse()));
7 фев 2021 в 14:26
А что если, использовать не только это число, чтобы это работало с любыми числами. По типу, если брать трехзначное число, можно использовать эту формулу: int n = Convert.ToInt32(Console.ReadLine()); int n = (n / 100) + (n / 10 % 10 * 10) + (n % 10 * 100);
7 фев 2021 в 14:31
А вы попробуйте.
7 фев 2021 в 14:31
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Если без циклов и условий, то вот:
int num = 12345, result = 0; int a = num % 10; num = num / 10; result += a * 10000; a = num % 10; num = num / 10; result += a * 1000; a = num % 10; num = num / 10; result += a * 100; a = num % 10; num = num / 10; result += a * 10; a = num % 10; num = num / 10; result += a; Console.WriteLine(result);
- Нам нужно сначала взять последнюю цифру и поставить её первой из пяти в результат. Чтобы взять последнюю цифру, можно найти остаток от деления на 10. 12345 % 10 = 5
- Затем ставим в результат первой из пяти цифр: result += 5 * 10000 = 50000
- Далее нам нужно отбросить от изначального числа последнюю цифру, т.к. мы её уже положили в результат, используем целочисленное деление на 10 12345 / 10 = 1234
- Возвращаемся к пункту 1.
Когда вернёмся у нас будет: 1234 % 10 = 4
Теперь эту цифру нужно поставить второй по счёту: result += 4 * 1000 = 54000
И так все 5 цифр.
Этот метод не сработает, если будут числа вроде 10000. Тогда остаток от деления даст 0, мы будем умножать 0 на 100000, на 10000, 1000 и т.д. до 1, в итоге вывод будет просто 1.
Но это решается, если мы будем использовать в качестве контейнера для результата строку:
int num = 10000; string result = ""; int a = num % 10; num = num / 10; result += a; a = num % 10; num = num / 10; result += a; a = num % 10; num = num / 10; result += a ; a = num % 10; num = num / 10; result += a; a = num % 10; num = num / 10; result += a; Console.WriteLine(result);
artem-russkikh / 1.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| // Дано 3 числа. Определите сумму чисел кратных 3. |
| // На входе у нас есть input с тремя числами |
| int [ ] input = new int [ 3 ] < 9 , 5 , 3 >; |
| int result = 0 ; |
| // Перебираем каждое число как i в inputе |
| foreach ( int i in input ) |
| // Число i кратно числу n, если i делится на n без остатка. |
| // i % 3 |
| // если остаток от деления числа на 3 равен 0 суммируем его к результату |
| if ( i % 3 == 0 ) |
| result += i ; |
| > |
| > |
| // Пишем результат — сумму чисел, кратных 3 |
| System . Console . Write ( » » , result ) ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| // Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого трехзначного числа. Если равкн вывести true, напротив false. |
| // Вводим и записываем число в переменную input |
| string inputStr = Console . ReadLine ( ) ; |
| int input = Convert . ToInt32 ( inputStr ) ; |
| // сумма цифр числа input |
| int inputSum = 0 ; |
| // для каждой цифры из числа input |
| foreach ( char c in inputStr ) |
| // преобразуем из char в string |
| var strC = Convert . ToString ( c ) ; |
| // прибавляем к сумме число из strC |
| inputSum += Convert . ToInt32 ( strC ) ; |
| > |
| bool result = Math . Pow ( input , 2 ) == Math . Pow ( inputSum , 3 ) ; |
| Console . WriteLine ( result ) ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| // Написать программу, которая бы по введенному номеру еденицы измерения (1 — киллограмм, 2 — милиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и в массе М выдавала бы соответствующее значение массы в килограммах. |
| Console . Write ( » Введите единицу измерения (1 — киллограмм, 2 — милиграмм, 3 — грамм, 4 — тонна, 5 — центнер): » ) ; |
| int measure = Convert . ToInt32 ( Console . ReadLine ( ) ) ; |
| Console . Write ( » Введите массу: » ) ; |
| double mass = Convert . ToDouble ( Console . ReadLine ( ) ) ; |
| // Подготовим переменную для вывода результата в киллограммах |
| double result = 0 ; |
| switch ( measure ) |
| case 1 : |
| // Выводим как есть |
| result = mass ; |
| break ; |
| case 2 : |
| // Переводим милиграмм -> килограмм |
| result = mass * 0.000001 ; |
| break ; |
| case 3 : |
| // Переводим грамм -> килограмм |
| result = mass * 0.001 ; |
| break ; |
| case 4 : |
| // Переводим тонна -> килограмм |
| result = mass * 1000 ; |
| break ; |
| case 5 : |
| // Переводим центнер -> килограмм |
| result = mass * 50 ; |
| break ; |
| default : |
| // Пишем ноль, т.к. не ясно какая единица измерения (некорректный ввод) |
| result = 0 ; |
| break ; |
| > |
| if ( result == 0 ) |
| Console . Write ( » Некорректный ввод » ) ; |
| > else |
| Console . Write ( » Масса в килограммах: » , result ) ; |
| > |
Перевернуть число
Вводится целое число. Вывести число, обратное введенному по порядку составляющих его цифр. Например, введено 3425, надо вывести 5243.
Решение задачи на языке программирования Python
Алгоритм:
- Найдем остаток от деления на 10 исходного (первого) числа. Тем самым получим последнюю его цифру. Запомним ее.
- Присвоим эту цифру новому (второму) числу-«перевертышу».
- Разделим нацело на 10 первое число. Тем самым избавимся от последней цифры в нем.
- Снова найдем остаток от деления на 10 того, что осталось от первого числа. Запомним цифру-остаток.
- Разделим нацело на 10 первое число. Избавимся от текущей последней цифры в нем.
- Умножим на 10 второе число. Тем самым увеличим его разрядность до двух и сдвинем первую цифру в более старший разряд.
- Добавим к полученному второму числу запомненную ранее цифру из первого числа.
- Будем повторять действия п. 4-7 пока первое число не уменьшится до нуля, т. е. пока не избавимся от всех его разрядов.
n1 = int(input("Введите целое число: ")) # Последнюю цифру первого числа переносим во второе digit = n1 % 10 n2 = digit # Избавляемся от последней цифры первого числа n1 = n1 // 10 while n1 > 0: # находим остаток - последнюю цифру digit = n1 % 10 # делим нацело - удаляем последнюю цифру n1 = n1 // 10 # увеличиваем разрядность второго числа n2 = n2 * 10 # добавляем очередную цифру n2 = n2 + digit print('"Обратное" ему число:', n2)
Примеры выполнения кода:
Введите целое число: 32809 "Обратное" ему число: 90823
Введите целое число: 78290 "Обратное" ему число: 9287
На самом деле мы можем не добавлять последнюю цифру первого числа во второе до цикла. Если присвоить n2 ноль, то в цикле при выполнении выражения n2 = n2 * 10 не будет происходить сдвига разряда, так как при умножении на 0 получается 0. И первая цифра будет добавляться в разряд единиц.
n1 = int(input("Введите целое число: ")) n2 = 0 while n1 > 0: digit = n1 % 10 n1 = n1 // 10 n2 = n2 * 10 n2 = n2 + digit print('"Обратное" ему число:', n2)
Приведенный алгоритм решения математический и соответствует задаче, если условие, что надо обрабатывать именно число, является строгим.
Однако средства Python позволяют решить подобную задачу более практично. Так у списков есть метод reverse , позволяющий изменять порядок элементов на обратный. Мы можем получить из исходной строки список символов, выполнить его реверс, после чего с помощью строкового метода join опять собрать в единую строку.
n1 = input("Введите целое число: ") n_list = list(n1) n_list.reverse() n2 = "".join(n_list) print('"Обратное" ему число:', n2)
Также можно воспользоваться взятием среза из исходной строки с первого до последнего символа с обратным шагом:
n1 = input("Введите целое число: ") n2 = n1[::-1] print('"Обратное" ему число:', n2)
Два последних варианта решения задачи — это способы переворота строки, а не числа как такового. Если объект, который надо переверуть, изначально имеет числовой тип данных (например, генерируется функцией randint() ), то его придется преобразовывать в строковый тип данных с помощью функции str() . И если на выходе мы должны получить опять же число, то надо будет строку превращать обратно в число с помощью функции int() .
from random import randint print("Исходное число:", end=' ') n1 = randint(5000, 1000000) print(n1) n1 = str(n1) n2 = n1[::-1] n2 = int(n2) print('"Обратное" ему число:', n2)
Исходное число: 970334 "Обратное" ему число: 433079
X Скрыть Наверх
Решение задач на Python
Переворот числа
Сформировать из введенного числа обратное по порядку входящих в него цифр и вывести на экран. Например, если введено число 3486, то надо вывести число 6843.
Если постепенно извлекать из первого числа последние цифры (и удалять их после этого из числа) и постепенно «дописывать» их в конец второго, то в итоге мы получим перевернутое первое число.
- Для извлечения последней цифры числа надо найти остаток от деления его на 10.
- Чтобы добавить цифру в конец числа, надо умножить число на 10 (сдвинуть разряды) и затем прибавить цифру-число (количество единиц).
Pascal
перевернуть число паскаль
var
n,m: longint;
begin
readln(n);
m := 0;
while n>0 do begin
m := m*10 + n mod 10;
n := n div 10;
end;
writeln(m);
end.
560601
106065
Язык Си
#include
main() unsigned int n,m;
scanf("%d",&n);
m = 0;
while (n > 0) m = m*10 + n%10;
n = n/10;
>
printf("%d\n",m);
>
1234566
6654321
Python
перевернуть число python (питон)
n = int(input())
m = 0
while n>0:
m = m*10 + n%10
n = n//10
print(m)
45034
43054
КуМир
алг переворот числа
нач
цел n, m
ввод n
m := 0
нц пока n>0
m := m*10 + mod(n,10)
n := div(n,10)
кц
вывод m
кон
109078
870901
Basic-256
input n
m = 0
while n>0
m = m*10 + n%10
n = n\10
endwhile
print m
450287
782054
