![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.11.2017
Сообщений: 42
|
![]()
Добрый день.
Помогите собрать код для такой задачи. Условие: В последовательности натуральных чисел от 1 до N сначала вычеркнули все нечетные, потом те, что стояли на нечетных местах в т.д., пока осталось только одно число. Какое это число? Входные данные: Натуральное число N(от 2 до 2 в степени 63) Исходные данные: Число, что останется. Задача как бы несложная. Если заметить, то здесь всего два цикла, которые повторяются: 1-ый-удаляет нечётные элементы, 2-ой-элементы, стоящие на нечётных местах. Я не могу собрать код для этой задачи так, что бы он работал. Помогите пожалуйста. Код для нечётных: Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
если обратить внимание, что в начале нечётные числа стоят на нечётных местах, то очевидно, что достаточно ОДНОГО цикла.
а вообще, это известная задача, см. "Задача Иосифа Флавия или считалка Джозефуса" Последний раз редактировалось Serge_Bliznykov; 08.02.2018 в 12:13. |
![]() |
![]() |
![]() |
#3 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Код:
Найти такое k, что бы 2^k <= N < 2^(k+1) То 2^k и останется после вычеркиваний
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 08.02.2018 в 13:32. |
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
согласен.
просто очень похожая. Цитата:
подтверждение (https://ideone.com/1HbAE7) (с "вычёркиваниями"): Код:
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 07.11.2017
Сообщений: 42
|
![]()
Спасибо. Вы мне очень помогли.
Код в принципе работает. И я уже в нете нашёл такую же задачу. Действительно число останется максимальная степень 2. Но код проходит на 95%. Что нужно ещё учесть?. Спасибо Код:
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 07.11.2017
Сообщений: 42
|
![]()
Кстати тип я поставил int64 вместо integer
|
![]() |
![]() |
![]() |
#8 |
Забанен
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
|
![]() Код:
![]()
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Из заданных чисел рандомно выбрать одно число | FleXik | Общие вопросы Delphi | 11 | 15.10.2013 03:43 |
Умножение на одно число | m837 | Microsoft Office Excel | 1 | 18.05.2011 20:35 |
Как объединить цифры в одно число? | y.barninets | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 11.12.2010 19:09 |
За один ход можна вычеркнуть одно число и на его место записать строго меньше неотрицательное число. | Witaliy | Помощь студентам | 5 | 25.02.2009 17:44 |
Можно ли разделить сразу несколько цифр на одно и тоже число? | Xell | Microsoft Office Excel | 2 | 12.01.2009 13:32 |