1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Unconnected |
5.06.2010 17:20
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Привет всем
Пробую решить олимпиадную задачку (конечно, с уже давно окончившейся олимпиады )), про последовательность (битов) Кеане - кто этот Кеане, я не знаю, и Вики с гуглом тоже. Формулировка такая: Цитата Последовательность Кеане (Время: 1 сек. Память: 16 Мб Сложность: 57%) Бесконечная последовательность битов, предложенная Кеане, равна 001001110001001110110110001… и формируется следующим алгоритмом: вначале записывается 0, потом 001, далее 001001110, то есть, для получения следующего члена, предыдущий записывается дважды, а справа приписывается его отрицание. Элементы этого ряда являются начальными подпоследовательностями Кеане. Требуется написать программу, которая по заданному n определит N-й бит этой последовательности. Входные данные Входной файл INPUT.TXT содержит число N (N <= 10200). Выходные данные В выходной файл OUTPUT.TXT должен содержать найденный бит. Просто генерировать последовательность у меня получается, вот так: {$APPTYPE CONSOLE}
(хотя, у меня такое ощущение, что она как-то неправильно генерирует) Проблема в очень большом максимально возможном N. Здесь, видимо нужно использовать длинную арифметику, но я вот не понимаю, в каком месте её использовать. Ну допустим есть строка-последовательность, есть N в виде строки, и что с чем складывать? Кажется, даже строку с последовательностью такой длины получить не получится, и тем более length() от неё. Может, формулу можно вывести для нахождения бита по позиции? Сообщение отредактировано: Unconnected - 5.06.2010 17:22 -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
| volvo |
5.06.2010 21:09
Сообщение
#2
|
|
Гость |
Unconnected, вот смотри, какой путь я бы избрал (показываю с применением обычной арифметики, с небольшими значениями). Идея - такая.
const Что меня мучает - это уж очень маленькое время задано для таких огромных чисел, времени может не хватить, тем более в случае использования длинной арифметики. Но это пока то, что мне придумалось, может потом наступит прозрение, как решать эту задачу... P.S. И все-таки, по поводу Цитата кто этот Кеане, я не знаю, и Вики с гуглом тоже - это Mephisto Waltz Sequence |
Unconnected Последовательность Кеане 5.06.2010 17:20
Сергей Меркурьев Генерация может быть и правильная, но проблема не ... 5.06.2010 17:52
Lapp [quote name='volvo' post='145547' date='5.06.2010 ... 6.06.2010 3:19
volvo Да. Не совсем так... Правда. Нужно кое-что добавит... 6.06.2010 4:10
Unconnected Сейчас дорассмотрел наконец код volvo (лето, напря... 9.06.2010 16:35
Lapp Ну и что с того, что длина выражается степенью тро... 10.06.2010 3:48
TarasBer > n=10^200 - то я, например, даже не представля... 9.06.2010 16:46![]() ![]() |
|
Текстовая версия | 9.12.2025 2:09 |