|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.11.2018, 09:32 | #1 |
Новичок
Джуниор
Регистрация: 25.11.2018
Сообщений: 1
|
Логическая задача в С++
Доброго времени суток, прошу Вас, как опытного пользователя данного сайта, помочь хотя бы как-то с логической задачей, на которую вы уже отвечали.
Учитель написал на доске некое натуральное число. После этого первый ученик сказал: "Это число делится на 1". Второй сказал: "Это число делится на 2",..., 50-й сказал: "Это число делится на 50". И, что интересно, только двое из них были неправы. Более того, два неверных утверждения были сделаны подряд одно за другим. Какое наименьшее число мог написать на доске учитель? С языком только начинаю знакомиться, вот с этой задачей какой-то ступор, буду ждать от вас ответа. |
25.11.2018, 15:44 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Предположу, что эту можно решать - "по умному" - выбирая подходящее число аналитически, либо можно попытаться решить задачку "лоб" - перебирая числа,
получаемые из произведения из 2*3*4*5*6*7*8..*50 но без двух делителей подряд. но в этом случае явно потребуется длинная арифметика (50! это очень большое число и в разрядную сетку не влезет). |
25.11.2018, 22:26 | #3 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Ну во-первых, не 50!, а более маленькое число - НОК этих чисел.
То есть 2^5 * 3^3 * 5^2 * 7^2 * 11 * 13 * 17 * 19 * 23 * 29 * 31 * 37 * 41 * 43 * 47 = 3099044504245996706400 Во-вторых, раз два неверных утверждения были сделаны подряд одно за другим, одно из них - про чётное число 2*k. А это по условиям задачи означает, что N делится на 2 и делится на k, но не делится на 2*k. Вариант только один, число делится на 16, но не делится на 32. Значит, второй неправильный ответ - либо 31, либо 33. Значит, исключаем 2 и 31. Остаётся 2^4 * 3^3 * 5^2 * 7^2 * 11 * 13 * 17 * 19 * 23 * 29 * 37 * 41 * 43 * 47 = 49984588778161237200 |
25.11.2018, 22:30 | #4 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Код:
|
25.11.2018, 22:53 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
26.11.2018, 11:24 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,555
|
Black Fregat Одна мысль - в две головы Я вот - что-то не спалось под утро - и думая над этой задачей, пришел к тому же выводу. Но опередили. Могем, когда захочем
А задачка хорошая. Олимпиадная. Не то что типичная учебная задачка: "Поменяйте местами в последнем ненулевом столбце матрицы положительные элементы с отрицательными, потом умножьте наибольшее положительное на наименьшее отрицательное, ответ запишите на туалетной бумаге и используйте по назначению" . PS Из врожденного занудства проверил : 49984588778161237200 действительно, на всех делится, а на 31, 32 не хочет. Длинную арифметику не использовал, ну ее. Oбошелся int64. Последний раз редактировалось digitalis; 26.11.2018 в 21:11. |
26.11.2018, 13:09 | #7 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,820
|
а число часом не 50-ричной системе счисления записано?
так-то, если что там, запись числа покороче будет, чем в 10.с.с.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
26.11.2018, 13:25 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Логическая задача | jura_k | Свободное общение | 8 | 09.10.2017 03:46 |
Логическая задача | Эльдар 18 | Помощь студентам | 4 | 10.06.2011 17:30 |
Логическая задача | FCShadow | Помощь студентам | 3 | 23.12.2010 17:54 |
логическая задача. | Karlsson))) | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 19.12.2010 10:34 |
Логическая задача | Senator | Помощь студентам | 1 | 06.06.2008 04:01 |