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

Дана по­сле­до­ва­тель­ность на­ту­раль­ных чисел. Назовём парой любые два числа из по­сле­до­ва­тель­но­сти. Не­об­хо­ди­мо опре­де­лить ко­ли­че­ство пар, в ко­то­рых де­ся­тич­ная за­пись про­из­ве­де­ния чисел в паре за­кан­чи­ва­ет­ся ровно на 7 нулей.

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

Файл А

Файл В

Пер­вая стро­ка вход­но­го файла со­дер­жит целое число N  — общее ко­ли­че­ство чисел в на­бо­ре. Каж­дая из сле­ду­ю­щих N строк со­дер­жит одно число, не пре­вы­ша­ю­щее 1 000 000 000. Га­ран­ти­ру­ет­ся, что число в от­ве­те не пре­вы­ша­ет 2 · 109.

Вам даны два вход­ных файла (A и B), каж­дый из ко­то­рых имеет опи­сан­ную выше струк­ту­ру. В от­ве­те ука­жи­те два числа: сна­ча­ла ис­ко­мое ко­ли­че­ство пар для файла A, затем  — для файла B.

 

Ответ:

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

Ре­ше­ние.

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

f = open('27-A.txt')

s = f.readlines()

count = 0

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

for j in range(i, len(s)):

if (int(s[i]) * int(s[j])) % 10000000 == 0 and i != j and (int(s[i]) * int(s[j])) % 100000000 != 0:

count += 1

print(count)

 

Ответ: 10  4298659.

 

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

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

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def pwr(n,base):

return 0 if n%base else 1 + pwr(n//base,base)

f = open('27-B.txt')

f.readline()

p = [[0]*15 for _ in range(32)] # 5**14 > 10**9 и 2**31 > 10**9

k = 0

for s in f:

x = int(s)

p2 = pwr(x,2)

p5 = pwr(x,5)

b2 = 7-p2

b5 = 7-p5

if b2 >= 0 and b5 >= 0: k += p[b2][b5]

if b2 >= 0: k += sum(p[b2][max(b5+1,0):])

if b5 >= 0: k += sum(p[i][b5] for i in range(max(b2+1,0),32))

p[p2][p5] += 1

print(k)


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