Форум » Обработка числовых последовательностей » Сколько бы мне поставили баллов за подобное решение? » Ответить

Сколько бы мне поставили баллов за подобное решение?

Nameless_Narrator: Добрый вечер. Недавно прорешал 27-ю задачу из досрочного варианта и не совсем могу понять, является ли оно эффективным. Я был бы очень благодарен, если бы вы взглянули на мое решение и оценили его. Задача(ссылка на РешуЕГЭ): Моё решение (ссылка на postimage): Комментарии к решению: 1) Проверил различные входные данные в компиляторе с оффициальным решением, и все выводы совпали, то есть программа точно работает правильно. 2) Объяснение переменных: x - вводимые значения; k - количество пар; k31 - значения кратные 31 и не кратные 62; k62 - значения кратные 62; ch - четные значения; num - четные + нечетные значения не кратные 31. Вопросы: Меня смущает тот факт, что все процессы происходят внутри 1 цикла "for" и можно было решить, используя меньше переменных. То есть решение выглядит неряшливым и очевидно может быть лучше. Поэтому меня интересует: Могут ли быть отняты какие-либо баллы за подобное решение? Всем заранее спасибо за помощь!

Ответов - 5

cabanov.alexey: Программа написана на 4 балла. Вы считаете число пар "по ходу дела", в эталонном решении число пар считается в конце. Тем не менее, несомненно, ваш вариант аналогично линеен по времени и постоянен по памяти. По поводу эстетичности, код можно чуть подсократить, если использовать else if [pre2] if x mod 62 =0 ... else if x mod 31 = 0 ... else if x mod 2 = 0 ... else ...[/pre2]

Nameless_Narrator: Большое спасибо за помощь!

Natalka_a@list.ru: var a:array [1..8] of integer; n,x,k,i,j:integer; begin read (n); for i:=1 to 8 do read (a); for i:=9 to n do begin for j:=2 to 8 do if (a[1]+a[j])mod 8 <>0 then k:=k+1; read (x); for j:=1 to 7 do a[j]:=a[j+1]; a[8]:=x; end; for i:=1 to 7 do for j:=i+1 to 8 do if (a+a[j]) mod 8 <> 0 then k:=k+1; writeln(k:4); end.


cabanov.alexey: 3 балла. Есть две синтаксические ошибки. По времени эффективна - цикл линейный. [pre2]for i:=1 to 8 do readln(a[ i ]); [/pre2] [pre2]if (a[ i ]+a[j]) mod 8 <> 0 then k:=k+1; [/pre2]

Natalka_a@list.ru: Спасибо! Это учтено, возможно при копировании что-то пошло не так)



полная версия страницы