Обозначим через ДЕЛ(,
) утверждение «число
делится без остатка на число
». Для дробных чисел это означает, что результатом деления
на
является целое число.
На числовой прямой даны отрезки ,
. Найдите максимальную длину промежутка
, такого что выражение
тождественно истинно, то есть принимает значение при любом натуральном числе
.
Решение 1 (ручками):
Запишем мечты врагов:
Рассмотрим мечты врагом из совокупности отдельно:
Враги хотят, чтобы
, то есть
, но так как мы берем только натуральные иксы, то
.
Враги хотят, чтобы
и
был кратен
или
. Тогда они будут брать
из промежутка
, кратные
или
, и по условию нас интересуют натуральные иксы, значит
.
Так как условия и
указаны в совокупности, значит врагам подойдут иксы, находящиеся в объединении множеств первого и второго условия.
Поэтому враги мечтают, чтобы и чтобы
.
Друзья говорят: «Нет, все эти иксы не принадлежат ». Тогда друзья могут взять, например,
или
или
. Наибольшую длину имеет
, его длина =
.
Решение 2 (прогой):
def inn(x, A):
return A[0] <= x <= A[1]
def f(x, A):
P = [15, 23]
Q = [17, 34]
return (((x % 4.5 != 0) and (x % 3 != 0) or (not inn(x, Q))
or (not inn(x, A))) and (inn(x, P) or (not inn(x, A))))
ans, n = 0, 15
borders = [0 ,0]
for a in range(1 * n, 70 * n):
for b in range(a, 70 * n):
A = [a / n, b / n]
flag = True
for x in range(1, 70 * n): # только натуральные
if not f(x, A):
flag = False
break
if flag:
if A[1] - A[0] > ans:
ans = A[1] - A[0]
borders[0] = A[0]
borders[1] = A[1]
print(borders)
print(ans)
Видим, что программа вывела промежуток и его длину
.
Значит, ответом является промежуток с дробными границами, левая граница которого стремится к , а правая к
, тогда длина стремится к
.