Йшов якось по вулиці Марк Іванович з сином і зустрілися їм троє знайомих. Трохи поговорили та розійшлися. А Марк Іванович і каже синові: «Моїм знайомим, разом узятим, в 4 рази більше років, ніж тобі. А добуток їх років становить 2450. Знаючи це, чи зможеш ти однозначно визначити вік кожного?»
Юнак подумав і сказав, що це неможливо, бо потрібна ще хоча б одна умова. «Так, - погодився Марк Іванович. Серед цих двох і є правильна відповідь. А ще всі мої знайомі молодші за мене».
Тоді юнак швидко дав правильну відповідь.
Для сина Марка Івановича завдання виявилося нескладним, тому що йому був відомий свій вік і вік батька. Однак, і не знаючи цього, можна визначити вік не тільки трьох знайомих Марка Івановича, а і вік самого Марка Івановича і вік його сина.
Всі числа років - цілі, менші за 100 і більші за 1.
Розв'яжіть цю задачу і пам’ятайте, що гуглити в таких випадках – гріх.
Коли ви розв’яжете задачу, у вас буде п’ять чисел - вік Марка Івановича, вік його сина і вік кожного з трьох знайомих. Відсортуйте їх за зростанням і запишіть без пропусків. Додайте адресу сайту «Плетиво» і у вас буде посилання типу pletyvo.in.ua/1020304557
Якщо задача розв’язана вірно, за цим посиланням ви побачите світлину. Перешліть меню цю світлину і це буде підтвердженням вашого вірного розв’язку.
Удачі!
ps Спробуйте самостійно розв'язати задачу.
А вже потім переглянути ТРИ правильні рішення, натиснув на посилання «Детальніше» :)
Розв’язок:
Дану задачу можна розв’язати перебором. Звичайно, за це можна отримати неприємності від вчителя математики за примітивність і від вчителя інформатики за те саме. Але давайте розпочнемо саме з цього варіанту.
Якщо підсумувати вік всіх трьох знайомих, то сума буде кратна чотирьом, тому що Марк Іванович сказав синові: «Моїм знайомим, разом узятим, в 4 рази більше років, ніж тобі». Ну і добуток віку всіх трьох знайомих буде 2450, це вказано в умові.
Давайте перебором виберемо всі варіанти, що задовільняють цим умовам і проаналізуємо, які суми віку всіх трьох знайомих у нас вийдуть.
Наприклад, таким кодом:
for z1 in range(2,100):
for z2 in range(2,100):
for z3 in range(2,100):
if z1*z2*z3 == 2450 and (z1+z2+z3) % 4 == 0:
print(z1, z2, z3, '=', z1 + z2 + z3)
Давайте запишемо всі варіанти, виключивши повтори:
2 25 49 = 76
2 35 35 = 72
5 5 98 = 108
5 10 49 = 64
7 7 50 = 64
7 10 35 = 52
А тепер звернемо увагу на суми. У нас є дві послідовності з однаковою сумою – 64. Син Марка Івановича так і відповів, що треба ще одна умова для однозначної відповіді.
Читаємо уважно відповідь:
«Так, - погодився Марк Іванович. Серед цих двох і є правильна відповідь. А ще всі мої знайомі молодші за мене». Це однозначно підказує, що саме ці дві послідовності нас і цікавлять. Випишемо їх:
5 10 49 = 64
7 7 50 = 64
Саме серед них нам треба обрати одну. Давайте аналізувати. Якщо Марку Івановичу, припустим, 60 років, то додаткова умова «всі вони молодші за мене» не дає однозначного розв’язку задачі. Залишається єдина умова, при якій одна з послідовностей буде відповідати умові, а інша – ні. Цей єдиний випадок - це коли Марку Івановичу – 50 років. І тоді варіант 7 7 50 можна відкинути і задача має однозначний розв’язок: 5 10 49.
А сину Марка Івановича тоді (5 + 10 + 49) / 4 = 16 років.
Це був перший варіант розв’язку, повним перебором. До речі, у Марка Івановича, виходить, є знайомі п’яти і десяти років, але це не протирічить умові задачі.
А тепер – математика.
Згідно умови, добуток віку всіх трьох знайомих буде 2450.
Розкладемо це число на прості множники: 2450 = 2 * 5 * 5 * 7 * 7.
Виписуємо всі комбінації добутків простих множників, враховуючи, що добуток не може бути більше 100, бо вік знайомого не може бути більше 100 років.
2 + 25 + 49 = 76
2 + 35 + 35 = 72
5 + 7 + 70 = 82
5 + 5 + 98 = 108
5 + 10 + 49 = 64
5 + 14 + 35 = 54
7 + 7 + 50 = 64
7 + 14 + 25 = 46
7 + 10 + 35 = 52
Це все. Інших послідовностей не існує. І ми не витратили час і ресурси на перебір. Викреслюємо послідовності, сума яких не кратна чотирьом.
Залишилось:
2 + 25 + 49 = 76
2 + 35 + 35 = 72
5 + 5 + 98 = 108
5 + 10 + 49 = 64
7 + 7 + 50 = 64
7 + 10 + 35 = 52
І ми отримали ті самі послідовності, які знайшли при повному переборі. Але гарно, швидко, математично.
І правильна відповідь, якщо відсортувати за зростанням вік всіх учасників задачі:
5 10 16 49 50
А за адресою pletyvo.in.ua/510164950 розміщено фото людини, який, без сумніву, є видатною фігурою для тих, хто вивчає математику.
Отже у нас є два способи – перебором і математичний. Але Валерій Шмідт запропонував третій. Валерій, хто не знає, людина з нетривіальним інтелектом. Учасник фіналу МАН в комп’ютерних науках, призер олімпіад, студент 121 спеціальності КПІ. Але Валерій до того має чудове почуття гумору, і він вирішив шукати на сайті «Плетиво» усі можливі сторінки в певному діапазоні :) Можна запустити програму і піти спати, а потім переглянути знайдені сторінки. І знайти відповіді на задачу.
Ось код його роботи:
import requests
for a in range(2, 100):
for b in range(2, 100):
for c in range(2, 100):
for d in range(2, 100):
for e in range(2, 100):
if '404' not in str(requests.get('http://pletyvo.in.ua/'+str(a)+str(b)+str(c)+str(d)+str(e))):
print('http://pletyvo.in.ua/'+str(a)+str(b)+str(c)+str(d)+str(e))
Заради справедливості варто сказати, що на повний перебор, по розрахункам Валерія треба 5,72 роки (плюс-мінус), отже однієї ночі може не вистачити :)
Відповідно, представлені три рішення задачі. Ну а хто на фото – погугліть картинку. Це дійсно легендарний чоловік.