Xccelerator

Пользователь

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

Xccelerator

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

img

Саму задачку я сделал, она не такая уж и тяжелая, но когда я ее показал учителю он сказал что через шифтирование это будет лучше сделать, но так как мы такое еще не учили он поверхностна сказал что это такое, а из того что я в инете узнал смог тока из 10 системы в 2 перевести, а как задачу решить через шифтирование не понял. Может кто помочь с этим (Делаем все на СHAhaa.png?1616514247)




задача

Дается номер N с макс 6 цифр. Узнать:

а) макс номер который получается убрав 1 цифру.

б) мин номер который получается убрав 1 цифру.


прим.

ввод: 123456

мин 12345

мфкс 23456




Для тех кто не понял о чем задачка(или что мне нужно), как убрать последнюю(первую) цифру через шифтирование




UPD. Я тут нашел что в РУ это Поразрядный сдвиг называется



Sketney ~

Пользователь

Регистрация: 23.02.2013

Сообщения: 3993

Рейтинг: 8126

Sketney ~

Регистрация: 23.02.2013

Сообщения: 3993

Рейтинг: 8126

img

Xccelerator сказал(а):


Нажмите, чтобы раскрыть...


Это who?

Xccelerator

Пользователь

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

Xccelerator

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

img

Sketney ~ сказал(а):


Это who?


Нажмите, чтобы раскрыть...


Xccelerator сказал(а):




UPD. Я тут нашел что в РУ это Поразрядный сдвиг называется




Нажмите, чтобы раскрыть...


HaisTous

Пользователь

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

HaisTous

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

img

Xccelerator сказал(а):


Саму задачку я сделал, она не такая уж и тяжелая, но когда я ее показал учителю он сказал что через шифтирование это будет лучше сделать, но так как мы такое еще не учили он поверхностна сказал что это такое, а из того что я в инете узнал смог тока из 10 системы в 2 перевести, а как задачу решить через шифтирование не понял. Может кто помочь с этим (Делаем все на СHAhaa.png?1616514247)




задача

Дается номер N с макс 6 цифр. Узнать:

а) макс номер который получается убрав 1 цифру.

б) мин номер который получается убрав 1 цифру.


прим.

ввод: 123456

мин 12345

мфкс 23456




Для тех кто не понял о чем задачка(или что мне нужно), как убрать последнюю(первую) цифру через шифтирование




UPD. Я тут нашел что в РУ это Поразрядный сдвиг называется




Нажмите, чтобы раскрыть...


Первый раз слышу такой термин, как шифтирование. Есть циклические сдвиги, но там явно не проще будет, чем твое решение. Также есть битовые сдвиги, в Python это >> и <<, но это явно не к твоему примеру.


В Python я бы число перевел в строку, затем с помощью срезов перебрал бы всевозможные подстроки (без 1-ого символа) с переводом их назад в число. И осталось бы просто вывести максимальное и минимальное.

Okayeg

Пользователь

Регистрация: 27.03.2021

Сообщения: 438

Рейтинг: 581

Okayeg

Регистрация: 27.03.2021

Сообщения: 438

Рейтинг: 581

HaisTous сказал(а):


Первый раз слышу такой термин, как шифтирование. Есть циклические сдвиги, но там явно не проще будет, чем твое решение. Также есть битовые сдвиги, в Python это >> и <<, но это явно не к твоему примеру.


В Python я бы число перевел в строку, затем с помощью срезов перебрал бы всевозможные подстроки (без 1-ого символа) с переводом их назад в число. И осталось бы просто вывести максимальное и минимальное.


Нажмите, чтобы раскрыть...


Перевод в строку и дальнейшие манипуляции с ней - костыль, а не решение. За такое его препод набутылит, скорее всего.






Xccelerator сказал(а):


Саму задачку я сделал, она не такая уж и тяжелая, но когда я ее показал учителю он сказал что через шифтирование это будет лучше сделать, но так как мы такое еще не учили он поверхностна сказал что это такое, а из того что я в инете узнал смог тока из 10 системы в 2 перевести, а как задачу решить через шифтирование не понял. Может кто помочь с этим (Делаем все на СHAhaa.png?1616514247)




задача

Дается номер N с макс 6 цифр. Узнать:

а) макс номер который получается убрав 1 цифру.

б) мин номер который получается убрав 1 цифру.


прим.

ввод: 123456

мин 12345

мфкс 23456




Для тех кто не понял о чем задачка(или что мне нужно), как убрать последнюю(первую) цифру через шифтирование




UPD. Я тут нашел что в РУ это Поразрядный сдвиг называется




Нажмите, чтобы раскрыть...


ТСу: впервые слышу такой термин, но если тебе нужно просто убрать цифру из числа, то самый простой способ заюзать такую формулу:


f(x) = ( x / 10^(n+1) ) * 10 ^ n + (x mod 10^n), где 'х' - твое число, а 'n' - разряд; / - целочисленное деление, mod - остаток от деления.


Пример: из числа 12345 нужно убрать цифру 3, оно имеет разряд 2 (нумеруем с нуля), подставив в формулу, получим:


f(x) = ( 12345 / 10^(2+1) ) * 10 ^ 2 + (12345 mod 10^2) = (12345 / 1000) * 100 + (12345 mod 100) = 12 * 100 + 45 = 1245


Дальше просто в цикле можешь перебрать все значения n от 0 до 5 и вывести минимальное/максимальное. Вроде ничего не потерял, как-то так.




Если твое число было дано изначально в бинарном/шестнадцатеричном формате, то можно было бы применить побитовые операции, но хз, по условию задачи это не подходит.

HaisTous

Пользователь

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

HaisTous

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

img

Okayeg сказал(а):


Перевод в строку и дальнейшие манипуляции с ней - костыль, а не решение. За такое его препод набутылит, скорее всего.


Нажмите, чтобы раскрыть...


Не уверен, что костыль. Возведение в степень и деление - довольно-таки трудоемкие, с точки зрения скорости, операции. Во-вторых, код меньше и читабельнее будет, если работать со строками. Потестил на Pyhon на 0.3 секунды со строками код работает быстрее, чем с арифметическими операциями.


Арифметика

qTm-pHdauYc.jpg?size=1920x1034&quality=96&sign=3cc73265082a5a68e3c0fef5bbbe92ad&type=album


Строки

UHI-4O9EpQ8.jpg?size=1920x1034&quality=96&sign=f60202eab1eee2a77ef94907b81be39f&type=album


Про язык C говорить не буду, так как последний раз с ним работал лет 5 назад на практике в универе.

Xccelerator

Пользователь

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

Xccelerator

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

img

HaisTous сказал(а):


Не уверен, что костыль. Возведение в степень и деление - довольно-таки трудоемкие, с точки зрения скорости, операции. Во-вторых, код меньше и читабельнее будет, если работать со строками. Потестил на Pyhon на 0.3 секунды со строками код работает быстрее, чем с арифметическими операциями.


Арифметика

qTm-pHdauYc.jpg?size=1920x1034&quality=96&sign=3cc73265082a5a68e3c0fef5bbbe92ad&type=album


Строки

UHI-4O9EpQ8.jpg?size=1920x1034&quality=96&sign=f60202eab1eee2a77ef94907b81be39f&type=album


Про язык C говорить не буду, так как последний раз с ним работал лет 5 назад на практике в универе.


Нажмите, чтобы раскрыть...


я тоже сначало хотел через строки сделать но в С нету stringа хотя стоп, у меня тока что появилась гениальная идея

п.с. я через арифметику делал

Lambda-chan

Пользователь

Регистрация: 26.07.2012

Сообщения: 4614

Рейтинг: 8630

Lambda-chan

Регистрация: 26.07.2012

Сообщения: 4614

Рейтинг: 8630

Мб там число в двоичном представлении должно быть? Потому что иначе в этом нет смысла


И не надо свои слова придумывать плз

Cloud In Pants

Пользователь

Регистрация: 01.05.2016

Сообщения: 1374

Рейтинг: 531

Cloud In Pants

Регистрация: 01.05.2016

Сообщения: 1374

Рейтинг: 531

Xccelerator сказал(а):


Саму задачку я сделал, она не такая уж и тяжелая, но когда я ее показал учителю он сказал что через шифтирование это будет лучше сделать, но так как мы такое еще не учили он поверхностна сказал что это такое, а из того что я в инете узнал смог тока из 10 системы в 2 перевести, а как задачу решить через шифтирование не понял. Может кто помочь с этим (Делаем все на СHAhaa.png?1616514247)




задача

Дается номер N с макс 6 цифр. Узнать:

а) макс номер который получается убрав 1 цифру.

б) мин номер который получается убрав 1 цифру.


прим.

ввод: 123456

мин 12345

мфкс 23456




Для тех кто не понял о чем задачка(или что мне нужно), как убрать последнюю(первую) цифру через шифтирование




UPD. Я тут нашел что в РУ это Поразрядный сдвиг называется




Нажмите, чтобы раскрыть...


12345610 = 111100010010000002


1234510 = 110000001110012


Каким образом твой препод хочет произвести такое преобразование только через бинарные операции и сдвиги - мне не понятно.


Это можно было бы сделать с двоично-десятичной системой, но не помню чтобы си сам мог в такие преобразования

Xccelerator

Пользователь

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

Xccelerator

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

img

Lambda-chan сказал(а):


Мб там число в двоичном представлении должно быть? Потому что иначе в этом нет смысла


И не надо свои слова придумывать плз


Нажмите, чтобы раскрыть...


ну просто в моем язык это так называется, да и в инглише похоже, вот и подумал что в ру также прости


Cloud In Pants сказал(а):


12345610 = 111100010010000002


1234510 = 110000001110012


Каким образом твой препод хочет произвести такое преобразование только через бинарные операции и сдвиги - мне не понятно.


Это можно было бы сделать с двоично-десятичной системой, но не помню чтобы си сам мог в такие преобразования


Нажмите, чтобы раскрыть...


ну я тоже об этом, думал я тупой и не понимаю, а оказывается что нет