Задания
Версия для печати и копирования в MS Word
Тип 16 № 64901
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 ≤ 8 · 107 и F(k)  =  35.

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

Ре­ше­ние.

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

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

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

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

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

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

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

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

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

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

7 умно­жить на 10 умно­жить на 10 умно­жить на 10 умно­жить на 4 умно­жить на 3 умно­жить на 6 умно­жить на 6 = 3 024 000.

 

Ответ: 3 024 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,8*10**7+1):

if f(x)==35:

count += 1

print(count)


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