:: Игры Разума
Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
Имеется 199 домов и 200 домовых. В каждый дом заселяется по одному домовому. Домовые заселяются в дома через одного (т.е. в первый дом - 1-ый домовой, второй дом - 3-ий домовой, третий дом- 5-ый домовой, 7-ой домовой, 9-ый, .....199-ый,4-ый,8-ой и т.д.) . Вопрос: домовому с каким номером не хватит дома?
Ratings: 0 negative/0 positive
Re: Домовые и дома
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
200-й. И не спорьте.
Ratings: 0 negative/0 positive
Re: Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
Кстати , счас посмотрел, я немного соврал в порядке расселения....199-ый, 2-ой, 6-ой и т.д. (господа модераторы, может исправите эту мою ошибку в первом сообщении, что бы условие изначально звучало правильно?)
to Prudivus ну если вам так хочется, то мы отведем его в сторонку



Исправлено 1 раз(а). Последнее : DIMM@, 15.05.07 09:27
Ratings: 0 negative/0 positive
Re: Домовые и дома
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Несмотря на поправку, алгоритм все-таки не конца ясен: после 200-го расселятся будет 8-ой или 16-ый?
Ratings: 0 negative/0 positive
Re: Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
Расселяются через одного. Если домовой уже заселен , то он не считается



Исправлено 1 раз(а). Последнее : DIMM@, 15.05.07 09:52
Ratings: 0 negative/0 positive
Re: Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
...



Исправлено 1 раз(а). Последнее : DIMM@, 15.05.07 09:53
Ratings: 0 negative/0 positive
Re: Домовые и дома
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Вот я и хочу уточнить, что значит через одного? После того, как пройдет третий круг заселения, последним будет заселен 200-ый. В очереди при этом останутся 8-ой, 16-ый, и т.д. Надо после этого 8-ого пропустить или не надо? Если не надо, то ответ достаточно очевиден - последним будет 128-ой, а если надо, то задача становится значительно более интересной.
Ratings: 0 negative/0 positive
Re: Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
если ряд выглядит так ...200, 8, 16.... то, конечно 8 -ой пропускается
Ratings: 0 negative/0 positive
Re: Домовые и дома
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Точно не уверен, но кажется нужно поступать так. Если N - число домов, а N-1 - число домовых, то число N надо представить в двоичном виде, первую единичку отбросить, а сзади приписать нолик. Это и будет ответ. Для N = 200 ответ 144.
Ratings: 0 negative/0 positive
Re: Домовые и дома
DIMM@
Автор

Сообщений: 522
Откуда: Витебск
Дата регистрации: 21.03.2006
"ответ 144"
Интересно , что в учебнике( а это задача из учебника вроде бы 6-ого класса), в ответе стоит 128
Ratings: 0 negative/0 positive
Re: Домовые и дома
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
Попытка вернуть всех в ряды фокспрошников
SET DELETED ON
CREATE CURSOR brownie (house I)
FOR zz=1 TO 200
APPEND BLANK
ENDFOR
LOCATE
FOR zz=1 TO 199
IF EOF()
LOCATE
ENDIF
REPLACE house WITH zz && для контроля
DELETE
SKIP 2
ENDFOR
LOCATE
SET DELETED OFF
?'ДОМОВОМУ С НОМЕРОМ',TRANSFORM(RECNO()),'НЕ ХВАТИЛО ДОМА'
дальше нуна поработать над усовершенствованием проги а может и алгоритмом


------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 2 раз(а). Последнее : Foxtrot, 16.05.07 10:30
Ratings: 0 negative/0 positive
Re: Домовые и дома
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Этот алгоритм дает ответ по "простому" варианту - 128. Лучше так
create cursor results (id i, dm i, dm2 i)
local m.i, m.r1, m.r2
for m.i= 2 to 1024
insert into results values (m.i, dm(m.i), dm2(m.i))
next
browse
function dm
lparameter m.n
use in select("dm")
create cursor dm (dm i)
local m.i, m.rez, m.rn
for i=1 to m.n
insert into dm values (i)
next
m.rez=0
scan
if recno()%2=1
m.rez=dm.dm
else
m.rn=recno()
insert into dm values (dm.dm)
goto (m.rn)
endif
endscan
return m.rez
function dm2
lparameter m.n
return iif(2^int(log(m.n)/log(2))=m.n, m.n, (m.n-2^int(log(m.n)/log(2)))*2)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика