![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 3
|
![]()
Задача с до боли простым и баянистым условием.
За один ход с числом делается такая операция: если число не делится на 3,то вычитаем 1, а если делится, то собсно делим. Из 39 единица получается за 5(это n) таких ходов. Сколько натуральных чисел, каждое из которых превращается в единицу за n ходов? (0<=n<=35) @Получить n @Вывести кол-во К примеру в пятерке 20 чисел. Можно на c++, pascal, java. Можно и на русском просто алгоритм обьяснить или суть процессии. Последний раз редактировалось ИльяБлум; 07.12.2013 в 22:16. Причина: Ламер и граматей. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
пока я не получил ответ на свой вопрос, набросал примерный код. если я не ошибаюсь, то решение может выглядеть так: Код:
Последний раз редактировалось Serge_Bliznykov; 07.12.2013 в 23:20. |
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Серж, не врубаюсь как к ней обратиться, чтобы в цикле вычислить для n от 1 до 35? Хочу свой вариант проверить
![]() Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
третьим параметром задаётся количество шагов. например, если нужно найти количество чисел с шагом n=3 то пишем: Код:
Не уверен, что вычисление для больших n уложится в разумные рамки! |
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Так, что ли? Степени двойки считает и очень долго
Код:
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
слева число шагов, справа - количество чисел, которые за это число шагов можно привести к единице? я неправильно понял задачу? число шагов = 0, только одно число за 0 шагов можно привести к единице - это число 1 число шагов = 1 число подходящих чисел - 2 (это числа 2 и 3) 3 steps 3/3 => =1 2 steps 2-1 => =1 число шагов = 2 число подходящих чисел - 4 (это числа 9,4,6,3) 9 steps 9/3 => 3/3 => =1 4 steps 4-1 => 3/3 => =1 6 steps 6/3 => 2-1 => =1 3 steps 3-1 => 2-1 => =1 и т.д. где я ошибаюсь?! ДОБАВЛЕНО. Ага, вижу, где я ошибаюсь. число 3 не подходит, из него нельзя отнимать едиицу, т.к. оно кратно 3!! в принципе, такой код работает: Код:
Последний раз редактировалось Serge_Bliznykov; 08.12.2013 в 00:38. |
||
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Я сначала пришел к тому, что если в троичном исчислении сложить все цифры числа в нашей родненькой десятичной и прибавить количество значащих цифр, то результат без двойки и будет количеством шагов, за которые к 1 приходит 20011 -> 2+1+1+5=9 -> 7 шагов Попытался с помощью числа сочетаний все посчитать, но кучу малу получил. А потом созрел до рекурсии K(i)=2*K(i-1)+K(i-4) для i>4
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Аватар, круто!
А я не смог разобраться в вашем решении... Видимо, оно выше моего понимания! ![]() |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Я сам уже запутался, завтра на свежую голову изложу ход мыслей
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 07.12.2013
Сообщений: 3
|
![]()
Первый раз на вашем форуме. Абсолютно все решение понял. Еще раз большое спасибо.
У меня получилось слегка аналогичное решение с аватаром... единственное, я не до конца додумался. Очень странно (как тяжелый наркоман) начал решать, а когда ответы на более высокие n не совпали (у меня был ответ на n=12,30; ), начал придумывать какие-то b и ее рекурсии... Вообщем самую страшную версию не выложу, но если вы хотите улыбнуться над школьником, то можете глянуть эту. Код:
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Логическая переменная, оператор присваивания (Pascal) | Electorat | Помощь студентам | 9 | 26.11.2013 15:52 |
Отображение значений переменных типа float и double(Языки Pascal и C) | Сырно | Помощь студентам | 3 | 17.10.2010 18:37 |
Pascal. рекурсия. | TOSAgrk | Помощь студентам | 2 | 04.02.2009 12:05 |