Vallez
Новичок
Задача Иосифа Флавия
Сущ-т легенда что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство в плену, воины решили выстроится в круг и последовательно убивать каждого 3го из живых до тех пор пока е останется ни одного человека. Однако Иосиф на ряду с 1 из единомышленников счел подобный конец бессмысленным - он быстро вычеслил места в круге на которые себя и товарища. И лишь поэтому остался жив.
Определить номера уцелевших.
при
проблем нету
при
1,2,4,5,7,8 wars remained are live
как решить проблему ?
может я гдето в алгоритме ошибся уже 3 часа мучаюсь
Сущ-т легенда что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство в плену, воины решили выстроится в круг и последовательно убивать каждого 3го из живых до тех пор пока е останется ни одного человека. Однако Иосиф на ряду с 1 из единомышленников счел подобный конец бессмысленным - он быстро вычеслил места в круге на которые себя и товарища. И лишь поэтому остался жив.
Определить номера уцелевших.
PHP:
//каждого k убиваем
$k = 3;
//всего n войнов
$n = 8;
//исключаем каждого $k-го
//создаем 41 иудейского война
$warriors = range(1,$n);
$i=0;
$offset=0;
while(count($warriors)>=$k) {
if($i%$k==0) { //убиваем этого
$offset = ($offset+2) % count($warriors);
array_splice($warriors, $offset, 1);
}
$i++;
}
echo implode(',',$warriors);
if(count($warriors) > 1) {echo " wars remained are live";}else{echo "warrior remained it is live";}
PHP:
//каждого k убиваем
$k = 3;
//всего n войнов
$n = 9;
при
PHP:
//каждого k убиваем
$k = 7;
//всего n войнов
$n = 8;
как решить проблему ?
может я гдето в алгоритме ошибся уже 3 часа мучаюсь