saxar, да было бы из-за чего (кружка) :)
Вид для печати
saxar, да было бы из-за чего (кружка) :)
Почему у вас такого вопроса не возникло, когда вы неверно сделали первое задание с сортировкой :) ?
Скрипт оценивается по каждому из 4-х пунктов независимо. Конкретно в этой задаче самый яркий пример это saxar. В целом его алгоритм верный. Но он не учел того факта, что при вычислении больших чисел стандартные арифметические операции в пхп дают неверные результаты. При малых числах скрипт Сахара работает верно. А значит его скрипт содержит "баг, ошибку, недоработку". Т.е. значительно снижены оценки только по первым двум пунктам.
Тогда возникает вполне очевидный и адекватный вопрос. В задаче дана последовательность вплоть до числа 144. Почему вы не взяли точкой отсчета числа 89 и 144 :) ? Т.е. как ни крути, а вы поступили не нормально.
Я решал эту задачу таким же способом как и вы. Но вас подвела реализация. Посмотрите мой скрипт в теме задания и сравните со своим.
Тело вашего цикла:
while (strlen($res) < 100)
{
$res = bcadd($fib1, $fib2);
$tmp = $fib1;
$fib1 = $fib2;
$fib2 = bcadd($fib2, $tmp);
}
Давайте раскроим содержимое шестой строки:
$fib2 = bcadd($fib2, $tmp);
Что такое $tmp? $tmp == $fib1. Что такое $fib2 в аргументе функции? Это тоже самое $fib2, что и в аргументе функции на третьей строке. И того получается, что на третьей и шестой строках вы вычисляете одно и тоже число:
$res = bcadd($fib1, $fib2);
$fib2 = bcadd($fib1, $fib2);
Правильно ваше тело цикла записывается так:
while (strlen($res) < 100)
{
$res = bcadd($fib1, $fib2);
$fib1 = $fib2;
$fib2 = $res;
}
вобще-то я спрашивал :) правда не по вашей оценке а по сумме.Цитата:
Почему у вас такого вопроса не возникло, когда вы неверно сделали первое задание с сортировкой :) ?
вполне мог и оттуда начать. алгоритм и ответ от этого не изменился бы.Цитата:
Почему вы не взяли точкой отсчета числа 89 и 144 :) ? Т.е. как ни крути, а вы поступили не нормально.
И ваши действия попали бы под этот пунктик.
Почему именно под этот? Потому что я все скрипты проверял на выдачу верных чисел Фибоначчи, а именно я проверял на диапазоны не более 1-го символа, не более 2-х символов и не более 3-х символов. Чтобы ваш скрипт выдал, если бы я задал диапазон не более 1-го символа? Тогда ваша оценка была бы такая же, как у Сахара или чуть выше, и по той же как у Сахара причине.
Далее, вы заявляете, что 0 вам не важен. Тогда почему он стоит в расчете первого шага цикла :) ? У вас $fib1 == $fib2 == 1. Тогда первоначально $res должен быть равен 2. Т.е. опять как ни крути, какие бы заявления не выдумывая, что 0 вам не нужен, вы все равно его принимали в расчете :) . Т.е. либо у вас ошибка в инициализации $fib1, либо ошибка в инициализации $res.
Mulder, ну вобще-то задача была вывести число Фибоначчи (потом уже появился пункт рассчитать) у которого больше(либо равно) 100 цифр. даже если оценивать алгоритм, то с данными условиями, а не менять их. это просто глупо.
А условия никто не менял :) . Кто захочет придраться к условию, всегда к нему придерется, как его не расписывай :) .
ЗЫ. 1+1=0 :) .
По поводу 6 задания:
в моем файле, в 5 строке титл страницы, уж не знаю какую неизвестную переменную он там нашел ...Цитата:
PHP Notice: Undefined variable: i in /var/www/localhost/htdocs/konkurs/06/v1c-06.php on line 5
никто не говорил о формате вывода числа и о том что должны быть представлены все цифры числа. согласен конечно что это не совсем наглядно, но считать из-за этого скрипт нерабочим это слишком.Цитата:
Ответ получен неверно: 1.3447196675862E+99
з.ы. зато меньше эталонного времени =)
1.3447196675862E+99 не тоже самое что 13447196675861531814197166417245678868908506962757 67987106294472017884974410332069524504824747437757
у вас последняя цифра 2, а не 1 как должно быть. и дальше у вас нули а не 53181...
Ну всё таки спорт на счёт 0 как то не особо важен, это можно было опустить)
Например когда надо найти макс эл в школе вроде как считается правильно и
$max = $ar[0];
for $i = 1 ...
так же и
$max = $ar[0];
for $i = 0 ...
Но поясняется, что второй вариант менее предпочтителен) так как выполняется лишнее действие, и ученик должен понимать это и писать первый вариант) Но допустимы оба варианта.
насчет нуля тут еще можно к семантике придраться. все таки 0 это нулевой член последовательности (F0) а у меня определяются в коде F1 и F2, так что начальные данные вполне верны :)
а если уж придираться к коду очень сильно, то ни один участник (я в том числе) не должен получать 10, потому что идеального кода не существует :)