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

C4 помогите разобраться

Lavanda: На ускорителе для большого числа частиц производятся замеры скорости каждой из них. Скорость частицы - это вещественное неотрицательное число, записанное с точностью до одного знака после десятичной точки. Частиц, скорость которых измерена, может быть очень много, но не может быть меньше трех. Все значения скоростей не превосходят 100000. При обработке результатов в каждой серии эксперимента отбирается основное множество частиц. Это такое непустое подмножество частиц, для которого произведение скоростей является максимально возможным. Если таких подмножеств несколько, то из них выбирается множество, которое содержит наименьшее количество элементов. В основное множество могут войти, например, как все частицы, так и ровно одна. Если числовое множество содержит только одно число х, то произведением элементов этого множества является число х. Напишите эффективную, в том числе по используемой памяти, программу, которая будет обрабатывать результаты эксперимента, находя количество элементов в основном множестве и значение минимального элемента в этом множестве. На вход программе в первой строке подается количество частиц N. В каждой из последующих N строк записано одно неотрицательное вещественное число с точностью до 1 знака после десятичной точки. Пример входных данных: 5 123.4 0.2 7.2 0.0 314.1 Программа должна вывести сначала размер основного множества, а затем - его минимальный элемент. Пример выходных данных для приведенного выше примера входных данных: 3 7.2 ВОПРОС: Правильно ли я понимаю: здесь предполагается, что в искомом множестве могут быть одинаковые числа? Тогда получается, что для нахождения количества элементов множества нужно посчитать числа большие 1 (К) и если среди всех скоростей единицы были, то ответ К+1, иначе К ?

Ответов - 17, стр: 1 2 All

Поляков: Lavanda пишет: здесь предполагается, что в искомом множестве могут быть одинаковые числа? Да, вроде бы никто не говорит о том, что все числа разные. для нахождения количества элементов множества нужно посчитать числа большие 1 (К) Да. если среди всех скоростей единицы были, то ответ К+1, иначе К ? Здесь не понял логики. Нужно учесть, что возможен еще вариант, при котором все скорости меньше 1. Тогда основное множество - это частица с наибольшей скоростью.

Lavanda: Спасибо, просто не понятно слово "множество" можно понимать и как в математике тоже. Да, конечно, последний особый случай не учла... когда нет чисел больше единицы. Еще раз спасибо за долгожданный ответ :) !!!

Ольга: Здравствуйте, Константин! Я вообще не уверена что правильно понимаю условие. Нам нужно вычислить количество эл-тов во множ-ве чисел <1 и во множестве чисел >1, затем сравнить их, так? А если они окажутся равными что тогда находим? Не ясен смысл этого фрагмента "Это такое непустое подмножество частиц, для которого произведение скоростей является максимально возможным. Если таких подмножеств несколько, то из них выбирается множество, которое содержит наименьшее количество элементов. В основное множество могут войти, например, как все частицы, так и ровно одна. Если числовое множество содержит только одно число х, то произведением элементов этого множества является число х. " Помогите разобраться, пожалуйста.


oval: Ольга пишет: Нам нужно вычислить количество эл-тов во множ-ве чисел <1 и во множестве чисел >1, затем сравнить их, так? нет, надо найти произведение и количество элементов >1, если таких элементов нет, то ответом будет максимальное число меньшее 1. непустое подмножество частиц, для которого произведение скоростей является максимально возможным т.е. все скорости частиц из этого подмножества >1 Если таких подмножеств несколько, то из них выбирается множество, которое содержит наименьшее количество элементов. частицы со скоростью =1 не включаем в множество. В основное множество могут войти, например, как все частицы, так и ровно одна. Если числовое множество содержит только одно число х, то произведением элементов этого множества является число х. если частиц со скоростями >1 нет, то наибольшее произведение даст одна частица, с максимальным значением скорости

Ольга: oval Спасибо за ваши комментарии, вроде понятно стало, будем перерешивать.

tavabar: Есть условие задачи: По ка-на-лу связи пе-ре-даётся по-сле-до-ва-тель-ность по-ло-жи-тель-ных целых чисел Х1, Х2, ... все числа не при-вы-ша-ют 1000, их ко-ли-че-ство за-ра-нее не-из-вест-но. Каж-дое число пе-ре-даётся в виде от-дель-ной тек-сто-вой стро-ки, со-дер-жа-щей де-ся-тич-ную за-пись числа. При-зна-ком конца пе-ре-да-ва-е-мой по-сле-до-ва-тель-но-сти яв-ля-ет-ся число 0. Уча-сток по-сле-до-ва-тель-но-сти от эле-мен-та ХT до эле-мен-та XT+N на-зы-ва-ет-ся подъёмом, если на этом участ-ке каж-дое сле-ду-ю-щее число боль-ше или равно преды-ду-ще-му, при-чем уча-сток нель-зя рас-ши-рить, т.е. 1) Т = 1 или ХT-1 > ХT 2) XT+N - по-след-ний эле-мент по-сле-до-ва-тель-но-сти или XT+N > XT+T+1. Вы-со-той подъёма на-зы-ва-ет-ся раз-ность XT+N - Х1. Подъём счи-та-ет-ся зна-чи-тель-ным, если вы-со-та подъёма боль-ше ве-ли-чи-ны ми-ни-маль-но-го эле-мен-та этого подъ-ема. На-пи-ши-те эф-фек-тив-ную про-грам-му, ко-то-рая вы-чис-ля-ет ко-ли-че-ство зна-чи-тель-ных подъ-емов в за-дан-ной по-сле-до-ва-тель-но-сти. Про-грам-ма долж-на вы-ве-сти ре-зуль-та-ты в сле-ду-ю-щей форме: По-лу-че-но чисел: ... Най-де-но зна-чи-тель-ных подъ-емов: ... Раз-мер па-мя-ти, ко-то-рую ис-поль-зу-ет про-грам-ма, не дол-жен за-ви-сеть от длины пе-ре-дан-ной по-сле-до-ва-тель-но-сти чисел. Перед тек-стом про-грам-мы крат-ко опи-ши-те ал-го-ритм ре-ше-ния за-да-чи. При-мер вход-ных дан-ных: 144 17 21 27 3 7 9 11 25 0 При-мер вы-ход-ных дан-ных для при-ведённого выше при-ме-ра вход-ных дан-ных: По-лу-че-но чисел: 9 Най-де-но зна-чи-тель-ных подъ-емов: 1 Есть ее решение: program с4_1; var n, up, х, start, last : integer; begin n: =0; up:=0; start:=1001; last:=1001; repeat readln(x); n: =n+l; if x < last then begin if last > 2*start then up:=up+1; start:=x; end; last:=x; until x = 0; writeln('По-лу-че-но чисел: ', n); writeln('Най-де-но зна-чи-тель-ных подъ-емов: ', up); end. И нет понимания ни условия, ни решения. У меня есть подозрение, что условие некорректно, например: раз-ность XT+N - Х1. Или в решении неверное условие например: if last > 2*start then up:=up+1; Помогите разобраться....

oval: Судя по переносам задача с решу егэ условие действительно не корректное, про решение вообще молчу в С4 есть задача 38, в ней определяется максимальный подъем, а не значительный, но доработать не сложно, я так думаю

tavabar: Спасибо, а я уж было совсем пала духом...

Ольга: Добрый день, оцените пожалуйста решение двух задач. 1. Радиотелескоп пытается получать и анализировать сигналы, поступающие из различных участков космоса, при этом различные шумы переводятся в последовательность вещественных неотрицательных чисел, заданных с точностью до одного знака после десятичной точки. Чисел может быть очень много, но не может быть меньше трёх. Все числа не превосходят 1000000. В последовательности чисел, полученных из одного участка, выделяется основное подмножество элементов. Это такое непустое подмножество элементов, для которого произведение соответствующих чисел является максимально возможным. Если таких подмножеств несколько, то из них выбирается подмножество, которое содержит наименьшее количество элементов. Основное подмножество может содержать, например, как все элементы последовательности чисел, так и ровно один элемент. Если множество чисел содержит только одно число x, то произведением элементов этого множества считается число x. Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет обрабатывать результаты, приходящие из одного участка, находя количество элементов в основном множестве и значение минимального элемента в этом множестве. Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи. На вход программе в первой строке подаётся количество сигналов N. В каждой из последующих N строк записано одно неотрицательное вещественное число с точностью до одного знака после десятичной точки. Пример входных данных: 6 123.4 0.2 200.2 0.0 6.7 218.0 Программа должна вывести в одной строке сначала количество элементов в основном множестве, а затем – его минимальный элемент. Пример выходных данных для приведённого выше примера входных данных: 4 6.7 Решение: var K,C,N,i:Longint; B,min1,min2,A,S:real; begin readln(N); K:=0; C:=0; B:=1; A:=1; min1:=1000000; min2:=1; For i:= 1 to N do begin readln (S); if (S>=1) then begin k:=k+1; B:=B*S; if S<min1 then min1:=S; end; if S<1 then begin C:=C+1; A:=A*S; if S<min2 then min2:=S; end; end; if (A>B) or (K=0) then writeln (C,' ',min2) else writeln (K,' ',min1); end.

oval: Ольга пишет: if S<1 then begin C:=C+1; A:=A*S; if S<min2 then min2:=S; end; если все числа меньше 1, то в максимальное произведение будет входить только одно число (наибольшее из меньших 1), здесь обсуждение подобной задачи

Ольга: 2. По каналу связи передаётся последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно, но может быть очень велико. Затем передаётся контрольное значение последовательности – наибольшее число R, удовлетворяющее следующим условиям: 1) R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных элементов последовательности, равных по величине, допускаются); 2) R делится на 35. Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены. Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: … Контроль пройден (или – Контроль не пройден) Перед текстом программы кратко опишите используемый Вами алгоритм решения. На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Пример входных данных: 6 77 35 7 9 997 500 38500 Пример выходных данных для приведённого выше примера входных данных: Вычисленное контрольное значение: 38500 Контроль пройден Решение: var N,M35,M5,M7,Max,i,S,res,R:longint; begin readln (N); M35:=0; Max:=0; M5:=0; M7:=0; For i:=1 to N do begin readln (S); if (S mod 5=0) and (S>M5) then M5:=S; if (S mod 7=0) and(S>M7) then M7:=S; if (S mod 35=0) and (S>M35) then M35:=S; if (S>Max) then Max:=S; end; if Max<>M35 then begin if M5*M7>M35*Max then res:=M5*M7 else res:=M35*Max end else if M5*M7>M35 then res:= M5*M7 else res:=M35; readln(R); writeln('Âû÷èñëåííîå êîíòðîëüíîå çíà÷åíèå: ',res); if R=res then writeln ('Êîíòðîëü ïðîéäåí') else writeln('Êîíòðîëü íå ïðîéäåí'); end.

Людмила: Обратите внимание на условие: R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел). У Вас считанное значение S (например, S=70) попадет сразу в М5, М7, М35 и Мах. Дальше по программе: if Max<>M35 then ??? if M5*M7>M35 then ???

Ольга: Вот я об этом условии тоже думала, да так и не поняла как в этом случае написать? Может поможете, Людмила?

oval: Ольга пишет: Может поможете if (s mod 35 =0) and (s>m35) then begin if m35> max then max:=m35; m35:= s; end else // гарантия не попадания одновременно и в max и в m35 if s> max then max:=s; if (s mod 7 = 0) and (s>m7) then m7:=s else // гарантия не попадания одновременно и в m7 и в m5 if (s mod 5 = 0) and( s> m5) then m5:=s

Ольга: Большое спасибо!

SergJP: Добрый день, коллеги! Ученик принес диагностическую работу. Не подскажете, как сделать С4 по дорогому варианту без массива и с максимальной скоростью? Мозги кипят от этих ФИПИшников. Для заданной последовательности неотрицательных целых чисел необходимо найти максимальное произведение двух её элементов, номера которых различаются не менее чем на 8. Значение каждого элемента последовательности не превышает 1000. Количество элементов последовательности не превышает 10000.

Поляков: SergJP пишет: к сделать С4 по дорогому варианту без массива и с максимальной скоростью? Посмотрите здесь и здесь.



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