Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сколькими способами можно пройтись по лестнице. 
:(
    Опции темы
neutrino
Дата 4.1.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Привет!

Есть лестница, ступеньки которой пронумерованы от 1. Есть правило как по такой лестнице подниматься: если стоишь на ступеньке с номером не являющимся простым числом - можешь подняться на следующую ступеньку или перепрыгнуть на ступеньку за ней, если номер ступеньки является простым числом, можно подняться только на одну - следующую за ней ступеньку. Надо пройти с первой ступеньки до k-той. Сколькими способами можно до k-той ступеньки подняться?

А теперь, внимание, задача: написать нерекурсивную (!!!) функцию для подсчета количества способов забраться на k-тую ступеньку.

Напомню, что простое число - это такое число, которое делится только на себя и на 1 (исключение: единица не является простым числом). Например: 2, 3, 5, 7, 11 ...

П.С. Эту задачку задали моей жене (она учится на упрвлении пр-вом).


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fedor
Дата 4.1.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 1
Всего: 32



Элементарно, neutrino

Используем метод динамического программирования - зная, сколько способов для i-той ступеньки, находим количество способов для i+1-ой и (если не простое) для i+2-ой

Написал на паскале. Если что-то непонятно, объясню
Код

const
maxsteps = 100;  {максимальное количество ступенек в лечтнице}

function ifprime(a:integer):boolean; {выясняет, простое ли число}
var
i:word;
begin
for i:=2 to trunc(sqrt(a)) do
 if a mod i = 0 then begin ifprime:=false; exit; end;
ifprime:=true;
end;
var
a:array[1..MaxSteps+2] of longint;   {массив, содержащий количество способов для каждой из ступенек}
i:word;
k:integer;
begin
readln(k);
a[1]:=1;          {на первую одним способом}
a[2]:=1;          {на вторую одним способом}
for i:=2 to k do
 begin
   if ifprime(i) then
      a[i+1]:=a[i+1]+a[i]
   else
    begin
      a[i+1]:=a[i+1]+a[i];
      a[i+2]:=a[i+2]+a[i];
    end;
 end;
writeln(a[k]);
end.


Это сообщение отредактировал(а) Fedor - 4.1.2005, 17:14


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
neutrino
Дата 4.1.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Я сам решил эту задачу. Какова сложность твоего алгоритма?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fedor
Дата 4.1.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 1
Всего: 32



K*(время определения простоты числа)


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
neutrino
Дата 4.1.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Программа работает неправильно. До 4-й ступеньки можно добраться 2-мя способами, а она пишет 1.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 4.1.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Видимо ошибка в том, что ты не проверяешь что единица не простое число.

Все равно есть более оптимальное решение.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fedor
Дата 4.1.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 1
Всего: 32



Цитата(neutrino @ 4.1.2005, 19:13)
Видимо ошибка в том, что ты не проверяешь что единица не простое число.

ой smile smile smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Fedor
Дата 4.1.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 1
Всего: 32



какая сложность получилась у тебя?
И покажи решение плиз если можно...


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
neutrino
Дата 4.1.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Неа. Не покажу. Пусть загрузят комбинаторную библиотеку и сами решат.
Добавлено @ 22:55
Сложность, кстати, посчитать у меня трудно за незнанием закона распределения простых чисел ...


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Fedor
Дата 4.1.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: 1
Всего: 32



Цитата(neutrino @ 4.1.2005, 21:53)
Сложность, кстати, посчитать у меня трудно за незнанием закона распределения простых чисел

закона не знаю smile
ну я ведь тоже не идеально посчитал... а так... округлил навскидку...


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
neutrino
Дата 7.1.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Ну? Еще версии...

Цитата(Fedor @ 4.1.2005, 21:59)
Внимание!
Fedor==Morpheus

Кхмм... А я думаю кто это этот Дядь Федр ... smile


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.1249 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.