Задания
Версия для печати и копирования в MS Word
Тип 27 № 59855
i

По ка­на­лу связи пе­ре­даётся по­сле­до­ва­тель­ность целых не­от­ри­ца­тель­ных чисел  — по­ка­за­ния при­бо­ра, по­лу­чен­ные с ин­тер­ва­лом в 1 мин. в те­че­ние T мин. (T  — целое число). При­бор из­ме­ря­ет ко­ли­че­ство ат­мо­сфер­ных осад­ков, по­лу­чен­ное ре­ги­стра­то­ром за ми­ну­ту, пред­ше­ству­ю­щую мо­мен­ту ре­ги­стра­ции, и пе­ре­даёт это зна­че­ние в услов­ных еди­ни­цах из­ме­ре­ния. Опре­де­ли­те два таких пе­ре­дан­ных числа, чтобы между мо­мен­та­ми их пе­ре­да­чи про­шло не менее K мин., а их про­из­ве­де­ние было ми­ни­маль­но воз­мож­ным. Ука­жи­те най­ден­ное про­из­ве­де­ние.

Файл А

Файл В

Вход­ные дан­ные.

Даны два вход­ных файла (файл A и файл B), каж­дый из ко­то­рых в пер­вой стро­ке со­дер­жит на­ту­раль­ное число K  — ко­ли­че­ство минут, ко­то­рое долж­но прой­ти между двумя пе­ре­да­ча­ми по­ка­за­ний, а во вто­рой  — ко­ли­че­ство пе­ре­дан­ных по­ка­за­ний N (1 ≤ N ≤ 10 000 000, N > K). В каж­дой из сле­ду­ю­щих N строк на­хо­дит­ся одно целое не­от­ри­ца­тель­ное число, не пре­вы­ша­ю­щее 1 000 000, обо­зна­ча­ю­щее ко­ли­че­ство осад­ков за со­от­вет­ству­ю­щую ми­ну­ту.

Вы­ход­ные дан­ные.

За­пи­ши­те в от­ве­те два числа: сна­ча­ла зна­че­ние ис­ко­мой ве­ли­чи­ны для файла A, затем  — для файла B.

Ти­по­вой при­мер ор­га­ни­за­ции дан­ных во вход­ном файле:

3

5

15

10

200

30

1

При таких ис­ход­ных дан­ных ми­ни­маль­но воз­мож­ное про­из­ве­де­ние ко­ли­че­ство осад­ков равно 10  — это про­из­ве­де­ние осад­ков, вы­пав­ших на вто­рой и пятой ми­ну­тах.

Ти­по­вой при­мер имеет ил­лю­стра­тив­ный ха­рак­тер. Для вы­пол­не­ния за­да­ния ис­поль­зуй­те дан­ные из при­ла­га­е­мых фай­лов.

 

Ответ:

Спрятать решение

Ре­ше­ние.

По­сле­до­ва­тель­но будем про­ве­рять пе­ре­дан­ные числа, чтобы между мо­мен­та­ми их пе­ре­да­чи про­шло не менее K мин., а их про­из­ве­де­ние было ми­ни­маль­но воз­мож­ным.

 

При­ведём ре­ше­ние на языке Python.

f = open('27.txt')

k = int(f.readline())

n = int(f.readline())

a = [int(x) for x in f]

pr = 100000000

mini = 100000000

for i in range(n):

mini = min (mini, a[i])

if i + k < len(a):

pr = min(pr, mini * a[i+k])

print(pr)

 

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла A ответ  — 30, из файла B  — 9.

 

Ответ: 30  9.

 

При­ме­ча­ние.

Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

При­ведём ре­ше­ние Ивана Глад­ких на языке Python.

f = open('27.txt').readlines()

k = int(f[0])

f = f[2:]

a = [int(i) for i in f]

m = 10**10

n = 10 ** 10

for i in range(k,len(f)):

n = min(n,a[i-k])

m = min(m,a[i] * n)

print(m)


Аналоги к заданию № 59826: 59855 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 20.06.2023. Ос­нов­ная волна. Даль­ний Во­сток