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

Ав­то­мат по­лу­ча­ет на вход четырёхзнач­ное де­ся­тич­ное число, в ко­то­ром все цифры нечётные. По этому числу стро­ит­ся новое число по сле­ду­ю­щим пра­ви­лам.

1.  Скла­ды­ва­ют­ся пер­вая и вто­рая, а также тре­тья и четвёртая цифры.

2.  По­лу­чен­ные два числа за­пи­сы­ва­ют­ся друг за дру­гом в по­ряд­ке не­убы­ва­ния (без раз­де­ли­те­лей).

При­мер. Ис­ход­ное число: 7511. Суммы: 7 + 5  =  12; 1 + 1  =  2. Ре­зуль­тат: 212. Сколь­ко су­ще­ству­ет чисел, в ре­зуль­та­те об­ра­бот­ки ко­то­рых ав­то­мат вы­даст число 616?

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

Ре­ше­ние.

Ясно, что дан­ное число со­сто­ит из чисел 6 и 16. Пер­вое число может быть об­ра­зо­ва­но двумя сум­ма­ми нечётных чисел: 1 и 5, 3 и 3. По­лу­ча­ем три ва­ри­ан­та двух цифр числа: 15, 33 и 51. Вто­рое число может быть об­ра­зо­ва­но сум­мой нечётных чисел 7 и 9. По­лу­ча­ем два ва­ри­ан­та ещё двух цифр числа: 79 и 97. По­лу­чен­ные два числа за­пи­сы­ва­ют­ся друг за дру­гом в по­ряд­ке не­убы­ва­ния, по­это­му каж­дую из групп цифр можно ме­нять ме­ста­ми (на­при­мер, 3397 и 7933 дают число 616). Пе­ре­би­рая по­лу­чен­ные груп­пы цифр, по­лу­ча­ем, что всего воз­мож­но 12 ис­ход­ных чисел: 1579, 7915, 1597, 9715, 3379, 7933, ...

 

При­ме­ча­ние. Не­об­хо­ди­мо ис­поль­зо­вать не­чет­ные цифры.

 

Ответ: 12.

 

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

k = 0

for i in range(1000, 10000):

s = str(i)

if int(s[0]) % 2 != 0 and int(s[1]) % 2 != 0 and int(s[2]) % 2 != 0 and int(s[3]) % 2 != 0:

k1 = int(s[0]) + int(s[1])

k2 = int(s[2]) + int(s[3])

first = str(min(k1, k2))

second = str(max(k1, k2))

s1 = first + second

if s1 == '616':

k += 1

print(k)

 

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

count = 0

for x1 in '13579':

for x2 in '13579':

for x3 in '13579':

for x4 in '13579':

m=[int (x1)+int(x2), int (x3)+int(x4)]

m.sort ()

if m[0] == 6 and m[1] == 16:

count += 1

print (count)

 

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

count = 0

al='13579'

for x in range(1000,10000):

s = str(x)

if s[0] in al and s[1] in al and s[2] in al and s[3] in al:

m = [int(s[0])+int(s[1]),int(s[2])+int(s[3])]

m.sort()

if m[0] == 6 and m[1] == 16:

count += 1

print(count)

 

 

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

def sumofd(n):

return sum(map(int,str(n)))

 

k = 0

for n in range(1000,10000):

a = ''.join(map(str,sorted([sumofd(n//100),sumofd(n%100)])))

if a == '616' and all([c in '13579' for c in str(n)]): k += 1

print(k)


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

Раздел кодификатора ФИПИ: 1.6.3 По­стро­е­ние ал­го­рит­мов и прак­ти­че­ские вы­чис­ле­ния