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

Файл со­дер­жит по­сле­до­ва­тель­ность не­от­ри­ца­тель­ных целых чисел, не пре­вы­ша­ю­щих 10 000. Назовём парой два иду­щих под­ряд эле­мен­та по­сле­до­ва­тель­но­сти. Опре­де­ли­те ко­ли­че­ство пар, в ко­то­рых хотя бы один из двух эле­мен­тов де­лит­ся на 5, а их сумма де­лит­ся на 7. В от­ве­те за­пи­ши­те два числа: сна­ча­ла ко­ли­че­ство най­ден­ных пар, а затем  — мак­си­маль­ную сумму эле­мен­тов таких пар.

За­да­ние 17

На­при­мер, в по­сле­до­ва­тель­но­сти (2 5 9 8 10) есть две под­хо­дя­щие пары: (2 5) и (5 9), в от­ве­те для этой по­сле­до­ва­тель­но­сти надо за­пи­сать числа 2 и 14.

 

Ответ:

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

Ре­ше­ние.

Решим за­да­чу пе­ре­бо­ром. При­ведём ре­ше­ние дан­ной за­да­чи на языке PascalABC:

var

x, y, count, maxsum: integer;

f: text;

begin

assign(f,'C:\17.txt');

reset(f);

count := 0;

maxsum := 0;

readln(f, x);

while not eof(f) do begin

readln(f, y);

if ((x mod 5 = 0) or (y mod 5 = 0)) and ((x + y) mod 7 = 0) then begin

count := count + 1;

if (x + y > maxsum) then maxsum := x + y;

end;

x := y;

end;

writeln(count, ' ', maxsum);

end.

 

Ре­зуль­тат ра­бо­ты про­грам­мы  — 308 18893.

 

Ответ: 308 18893.

 

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

f = open("17(6).txt")

s = f.readlines()

k = 0

maxi = 0

for i in range(len(s)):

s[i] = int(s[i])

for i in range(len(s) - 1):

if (s[i] % 5 == 0 or s[i + 1] % 5 == 0) and ((s[i] + s[i + 1]) % 7 == 0):

k += 1

maxi = max(maxi, s[i] + s[i + 1])

print(k, maxi)

Раздел кодификатора ФИПИ: 1.7.2 Ос­нов­ные кон­струк­ции языка про­грам­ми­ро­ва­ния. Си­сте­ма про­грам­ми­ро­ва­ния