Форум » Обработка числовых последовательностей » Задача27 с досрочного егэ, правильно ли решено ? » Ответить

Задача27 с досрочного егэ, правильно ли решено ?

user7317: var i,n:integer; kz:longint; z,z1,z2:integer; begin readln(n); z1:=0;z2:=0; for i:=1 to N do begin readln(z); if (z mod 2<>0) then if (z>z1)or(z>z2) then if z1=0 then z1:=z else z2:=z; end; read(kz); Writeln('Вычисленное контрольное значение :',z1*z2); If kz=(z1*z2) then write('Контроль пройден') else write('Контроль не пройден'); end.

Ответов - 6

user7317: На спутнике «Восход» установлен прибор, предназначенный для измерения солнечной активности. В течение времени эксперимента (это время известно заранее) прибор каждую минуту передаёт в обсерваторию по каналу связи положительное целое число, не превышающее 1000, - количество энергии солнечного излучения, полученной за последнюю минуту, измеренное в условных единицах. После окончания эксперимента передаётся контрольное значение наибольшее число R, удовлетворяющее следующим условиям: R - произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются); R не делится на 26. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены. Напишите эффективную по времени и используемой памяти программу (укажите используемую версию языка программирования, например Free Pascal 2.6.4), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме. Вычисленное контрольное значение: ... Контроль пройден (или Контроль не пройден) Если удовлетворяющее условию контрольное значение определить невозможно, то выводится только фраза «Контроль не пройден». Перед текстом программы кратко опишите используемый Вами алгоритм решения. На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно положительное целое число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных: 5 52 12 39 55 23 2145 Пример выходных данных для приведённого выше примера входных данных: Вычисленное контрольное значение: 2145 Контроль пройден

Поляков: user7317 пишет: Задача27 с досрочного егэ, правильно ли решено ? Думаю, что нет. Как вы проверяете, что число не делится на 26?

user7317: проверил что числа не делятся на 2, но я не уверен что так можно проверить делимость 26, поэтому спросил здесь


Поляков: user7317 пишет: проверил что числа не делятся на 2, но я не уверен что так можно проверить делимость 26, поэтому спросил здесь Чтобы убедиться, что произведение z1*z2 не делится на 26, нужно проверить, что исключены три ситуации 1) z1 делится на 26 2) z2 делится на 26 3) одно из чисел делится на 2, второе - на 13. Вы отсекаете все чётные числа. Таким образом, вы, конечно, отсекаете все произведения, которые делятся на 26, но отсекаете еще и много лишнего.

user7317: Проверьте пожалуйста, добавил проверку на четность и кратность 13 и 26. var i,n:integer; kz:longint; z,z1,z2:integer; begin readln(n); z1:=0;z2:=0; for i:=1 to N do begin readln(z); if (z mod 26 <>0) then if (z>z1) and ((z mod 2=0)and(z mod 13<>0)or(z mod 2<>0)and(z mod 13=0)) then z1:=z else if z>z2 then z2:=z; end; read(kz); Writeln('Вычисленное контрольное значение :',z1*z2); If kz=(z1*z2) then write('Контроль пройден') else write('Контроль не пройден'); end.

Поляков: user7317 пишет: Проверьте пожалуйста, Задача разобрана на сайте.



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