|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.10.2010, 13:39 | #1 |
Новичок
Джуниор
Регистрация: 05.10.2010
Сообщений: 5
|
Сдвиги Pascal (ТРУДНАЯ ЗАДАЧА)
Ограничение по времени: 1 секунда
Ограничение по памяти: 64 Мб Максим работает в лаборатории чисел. Ученые этой лаборатории проводят важный опыт над числами. Дано число в десятичной системе счисления. Его переводят в двоичную и записывают на листок как последовательность единиц и нулей. Затем над этой последовательностью производят циклический сдвиг - каждую цифру перемещают на одну вправо, а последнюю на первое место. С новой последовательностью проводят ту же операцию, и всё это продолжается до тех пор пока не получается исходная последовательность. Все последовательности на листке снова преобразуют в числа и переводят в десятичную систему. Все эти числа называют "аналогами" подопытного числа. Среди них находят максимальное и называют его "старшим аналогом". "старший аналог" числа может соответствовать самому числу. (например для числа 12 аналогами будут являться числа 9,3, 5, 12, максимальное из них - 12). Максим пишет программу, которая по числу определяет его старшего аналога. можете ли вы ему помочь? ФОрмат входных данных На вход программе подаётся натуральное число N(1<=N<=2 в 15 степени) (<= - меньше либо равно) - подопытное число Формат выходных данных: Выведите старший аналог числа |
05.10.2010, 15:33 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Вам как
1. дать подсказку (в двоичной математике) 2. расписать алгоритм 3 или сразу написать программу.
программа — запись алгоритма на языке понятном транслятору
|
05.10.2010, 16:12 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
извините, что влезаю в тему со своим вопросами...
народ, а кто понял, расскажите мне, пожалуйста, что такое "до тех пор пока не получается исходная последовательность" ?! ну, вот, взяли (как в примере в самой задаче число 12): 0000000000001100 сдигаем, получаем 6 0000000000000110 потом .... 0000000000000011 1000000000000001 1100000000000000 0110000000000000 0011000000000000 0001100000000000 0000110000000000 0000011000000000 0000011000000000 0000001100000000 0000000110000000 0000000011000000 0000000001100000 0000000000110000 0000000000011000 0000000000001100 И где в этой последовательности 5 и 9 ?!?! или я торможу, или одно из двух... поясните, пожалуйста... |
05.10.2010, 17:12 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
1100 = 12 0110 = 6 0011 = 3 1001 = 9 1100 = 12 P.S. алгоритм решения прост и примитивен но требует умения мыслить в двоичной математике. Используются свойства и правила сравнения двоичных чисел.сравнения Впрочем в обычной арифметике действую те же правила. Но в двоичной все гораздо проще потому что только ДВЕ цифры. Подождем ответа на первый пост. Но сразу оговорюсь, писать всю программу не буду. Могу ответить только первые 2 варианта.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 05.10.2010 в 17:24. |
|
05.10.2010, 17:38 | #5 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 410
|
так а где же число 5??? или он просто ошибся.
Да, и ограничение по памяти наверное не Mб, а Кб.
ICQ: 593-013-807
Последний раз редактировалось Don Karleone; 05.10.2010 в 17:41. |
05.10.2010, 20:00 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
всё понятно.
Коллеги, спасибо за ответ. 1) число 5 лишнее, его там быть не может 2) описание задачи + решение - тут - Забавная игра (Программирование на Паскале) думаю, что максимальное число сдвигов (при N<=2 в 15 степени) будет всего 16 сдвигов. Думаю, что секунды хватит даже при решении задачи "в лоб"... |
05.10.2010, 21:32 | #7 |
Новичок
Джуниор
Регистрация: 05.10.2010
Сообщений: 5
|
напишите программу плиз
|
06.10.2010, 13:53 | #8 | |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Цитата:
Нифига себе...Какие щедрые преподы(ну или учебники) на память...Это ж как в паскале можно столько потратить памяти?Я 65Кб и то с трудом могу потратить.... |
|
06.10.2010, 14:06 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
06.10.2010, 14:47 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как реализовать в турбо паскале побитовые сдвиги. | Moneo | Помощь студентам | 1 | 26.02.2010 11:21 |
Delphi. Консоль. Массивы. Сдвиги в них. | Saka | Помощь студентам | 2 | 10.12.2009 20:25 |
использовать оператор цикла, сдвиги и инкремент | Еля | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 8 | 16.11.2009 15:04 |
Трудная прога на Паскале | HECTOR.A. | Помощь студентам | 3 | 18.12.2008 08:54 |
Сдвиги и циклы ...вроде | Magnit | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 01.06.2007 01:01 |