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

27.95

Аскар: В файле с ответами представлено другое решение. Не могли бы вы посмотреть мой способ(условие задачи привёл под кодом): var i,N,a,b1,b3,b7,b9,c1,c3,c7,c9:integer; begin b1:=0; b3:=0; b7:=0; b9:=0; c1:=0; c3:=0; c7:=0; c9:=0; readln(N); for i:=1 to n do begin readln(a); case a mod 10 of 1: begin if b1 mod 2 = 1 then c1:=i; if i>=(c1+5) then b1:=b1+1; end; 3: begin if b3 mod 2 = 1 then c3:=i; if i>=(c7+5) then b3:=b3+1; end; 7: begin if b7 mod 2 = 1 then c7:=i; if i>=(c3+5) then b7:=b7+1; end; 9: begin if b9 mod 2 = 1 then c9:=i; if i>=(c9+5) then b9:=b9+1; end; end end; writeln(b1+b3+b7+b9); end. 95) (О.Л. Дуркин, Сыктывкар) На вход программы поступает последовательность из N натуральных чисел (8 ≤ N ≤ 1000). Необходимо определить количество пар (ai и bj, i < j) элементов таких, что их произведение оканчивается на 1, и между ними находится не менее 4 чисел. Задача А (2 балла). Напишите программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов. Задача B (4 балла). Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик). Описание входных и выходных данных В первой строке входных данных задается количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превосходящее 10000. В качестве ответа программа должна вывести одно число, количество пар элементов, удовлетворяющих условию. Пример входных данных: 10 12 81 2 7 33 99 21 11 121 10 Пример выходных данных для приведенного выше примера входных данных: 3

Ответов - 5

DurkinOleg: Добрый день Ваша программа не проходит тесты Например: 10 7 7 2 2 2 2 2 3 3 3 У Вас программа выдает 3, правильный ответ 6

Аскар: Добрый день, а вот такое вот решение: var N,x,kp,z1,z3,z7,z9,j:integer; a:array[0..4] of integer; begin readln(n); kp:=0; z1:=0; z9:=0; z3:=0; z7:=0; for j:=0 to 4 do read(a[j]); for j:=5 to n-1 do begin read(x); case a[j mod 5] mod 10 of 1:z1:=z1+1; 3:z3:=z3+1; 7:z7:=z7+1; 9:z9:=z9+1; end; case x mod 10 of 1: kp:=kp+z1; 3: kp:=kp+z7; 7: kp:=kp+z3; 9: kp:=kp+z9; end; a[j mod 5]:=x; end; writeln(kp); end.

cabanov.alexey: Аскар, ваша первая программа не является верной. Для набора чисел 8 1 11 21 31 41 51 61 71 81 программа выдаёт 1, хотя должна 10. Во второй программе помарка, цикл должен быть до n. C исправлением тесты проходятся. Это 3 балла. Не забывайте писать описание работы - это сильно влияет на понимание вас экспертом.


OlgaChe1: cabanov.alexey пишет: "Во второй программе помарка, цикл должен быть до n. C исправлением тесты проходятся. Это 3 балла." Т.е. за ошибку в условии цикла минус балл?

cabanov.alexey: По критериям оценивания да. Вообще 3 балла можно словить за 3 синтаксических либо одну из этого перечня 1) ошибка при вводе данных (не считывается значение N или неверно организован ввод последовательности); 2) ошибка при инициализации или отсутствие инициализации там, где она необходима; 3) используется неверный тип данных; 4) использована одна переменная (константа) вместо другой; 5) используется один знак операции вместо другого; 6) отсутствует вывод ответа или выводится не то значение (хотя правильный ответ в программе найден); 7) неверная работа с массивом, в том числе выход за границы массива; 8) пропущены или неверно расставлены операторные скобки (при использовании языков с операторными скобками)



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