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

Обо­зна­чим через a%b оста­ток от де­ле­ния на­ту­раль­но­го числа a на на­ту­раль­ное число b, а через a//b  — целую часть от де­ле­ния a на b.

Функ­ция F(n), где n  — не­от­ри­ца­тель­ное целое число, за­да­на сле­ду­ю­щи­ми со­от­но­ше­ни­я­ми:

F(n)  =  1, если n  =  0;

F(n)  =  (n%10) · F(n//100), если n нечётно;

F(n)  =  F(n//100), если n > 0 и n чётно.

 

Опре­де­ли­те ко­ли­че­ство таких целых k, что 107 ≤ k ≤ 9 · 107 и F(k)  =  25.

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

Ре­ше­ние.

Для при­ме­ра най­дем зна­че­ние F(12345):

F левая круг­лая скоб­ка 12345 пра­вая круг­лая скоб­ка = 5 умно­жить на F левая круг­лая скоб­ка 123 пра­вая круг­лая скоб­ка = 5 умно­жить на 3 умно­жить на F левая круг­лая скоб­ка 1 пра­вая круг­лая скоб­ка = 5 умно­жить на 3 умно­жить на 1 = 15.

Рас­смот­рим зна­че­ние F(1234):

F левая круг­лая скоб­ка 1234 пра­вая круг­лая скоб­ка = F левая круг­лая скоб­ка 12 пра­вая круг­лая скоб­ка = F левая круг­лая скоб­ка 0 пра­вая круг­лая скоб­ка = 1.

То есть ал­го­ритм счи­та­ет про­из­ве­де­ние цифр сто­я­щих на чет­ных ме­стах числа, если цифра не­чет­ная. При этом нас ин­те­ре­су­ют толь­ко числа, про­из­ве­де­ние не­чет­ных цифр ко­то­ро­го, сто­я­щих на чет­ных ме­стах, дают ответ 25. Число 25 можно по­лу­чить про­из­ве­де­ни­ем цифр 5 и 5 (и 1, и это учтем в даль­ней­ших вы­чис­ле­ни­ях).

Всего число у нас со­сто­ит из 8 цифр. На двух чет­ных мест долж­ны сто­ять 5 (таких по­зи­ций воз­мож­но 6).

На осталь­ных чет­ных ме­стах могут сто­ять числа 0, 1, 2, 4, 6, 8 (цифра 1, так как она не уве­ли­чи­ва­ет про­из­ве­де­ние чисел. Таких по­зи­ций оста­ет­ся 2).

На пер­вом месте в числе могут сто­ять цифры 1, 2, 3, 4, 5, 6, 7, 8 (0 не может сто­ять на пер­вом месте, 9 пре­вы­сят от­ве­ден­ный диа­па­зон).

На осталь­ных не­чет­ных ме­стах могут сто­ять любые цифры (таких по­зи­ций в числе 3).

По­счи­та­ем ко­ли­че­ство чисел из диа­па­зо­на k, что 107 ≤ k ≤ 9 · 107 и F(k)  =  25:

8 умно­жить на 10 умно­жить на 10 умно­жить на 10 умно­жить на 6 умно­жить на 6 умно­жить на 6 = 1 728 000.

 

Ответ: 1 728 000.

 

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

def f(n):

if n == 0:

return 1

if n%2!=0:

return (n%10)*f(n//100)

if n%2==0:

return f(n//100)

count = 0

for x in range(10**7,9*10**7+1):

if f(x)==25:

count += 1

print(count)


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