В треугольнике ABC сторона AC равна 2√21, AB=BC. В...
تم الإنشاء في: ٢٤ ديسمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.2 Thinking بواسطة Chat01
تم الإنشاء في: ٢٤ ديسمبر ٢٠٢٥
تمت الإجابة باستخدام GPT-5.2 Thinking بواسطة Chat01
В треугольнике ABC сторона AC равна 2√21, AB=BC. Вписанная окружность ω касается стороны AB в точке K. Отрезок CK пересекает ω в точке M. Известно, что длина отрезка MK равна 4. Найдите длину стороны BC. В ответ запишите квадрат полученной величины.
Обозначим , . Тогда полупериметр
Точка касания окружности со стороной делит её на отрезки длиной и . Так как , то отрезок от до точки касания на равен
Значит, длина касательной из к вписанной окружности равна , и степень точки :
Прямая пересекает окружность в точках и , причём порядок . Тогда
Но , значит . Пусть . Тогда
Следовательно,
По свойству касательных на стороне :
Поставим координаты: , , . Тогда
Точка лежит на и , значит доля отрезка
Отсюда координаты :
После вычисления получается
Но , значит
Требуется :
Ответ: .
Среди 15 человек некоторые − друзья. Но любые два человека, имеющие среди других одинаковое число друзей, между собой не дружат. Найдите максимальное возможное число разных пар друзей среди этих 15 человек.
pythonimport pkgutil, math, itertools, collections, random, time, functools, statistics, sys any(m.name=='networkx' for m in pkgutil.iter_modules()) True
pythonany(m.name=='pulp' for m in pkgutil.iter_modules()), any(m.name=='ortools' for m in pkgutil.iter_modules()) (False, False)
pythonany(m.name=='cvxpy' for m in pkgutil.iter_modules()) False
pythonany(m.name=='pyscipopt' for m in pkgutil.iter_modules()), any(m.name=='mip' for m in pkgutil.iter_modules()) (False, False)
pythonimport itertools, math def max_edges_complete_multipartite(n=15): best=None best_part=None # partitions into distinct positive ints, order descending # brute force subsets of 1..n for r in range(2,n+1): for parts in itertools.combinations(range(1,n+1), r): if sum(parts)==n: # distinct already # edges s=sum(parts) edges=(s*s - sum(p*p for p in parts))//2 if best is None or edges>best: best=edges best_part=parts return best,best_part max_edges_complete_multipartite() (85, (1, 2, 3, 4, 5))
pythonany(m.name in ('pysat','python_sat','pysat.solvers') for m in pkgutil.iter_modules()) False
pythonany(m.name=='z3' or m.name=='z3solver' or m.name=='z3-solver' for m in pkgutil.iter_modules()) False
pythonfrom functools import lru_cache def partitions(n, max_part=None): if max_part is None or max_part>n: max_part=n if n==0: yield [] return for first in range(min(max_part,n),1-1,-1): for rest in partitions(n-first, first): yield [first]+rest # generate all integer partitions of 15 parts_list=list(partitions(15)) len(parts_list), parts_list[:5], parts_list[-1] (176, [[15], [14, 1], [13, 2], [13, 1, 1], [12, 3]], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
pythonN=15 def max_sum_for_partition(sizes): sizes=tuple(sizes) L=[N - s for s in sizes] # order by maybe size descending; but assignment best do recursion on parts # use DP on index and used degrees bitmask (15 bits for 0..14) @lru_cache(None) def dp(i, used_mask): if i==len(sizes): return 0 best=-1 for d in range(L[i], -1, -1): # high to low if used_mask>>d &1: continue val = sizes[i]*d + dp(i+1, used_mask | (1<<d)) if val>best: best=val return best return dp(0,0) best=0 best_parts=None best_sum=None for p in parts_list: if len(p)==1: continue p_sorted=sorted(p, reverse=True) ms=max_sum_for_partition(p_sorted) if ms>best: best=ms best_parts=p_sorted best_sum=ms best, best_parts, best_sum/2 (170, [5, 4, 3, 2, 1], 85.0)
Рассмотрим граф дружбы на 15 вершинах, степень вершины — число друзей.
Пусть — число людей, имеющих ровно друзей. По условию любые два человека с одинаковым числом друзей не дружат, значит внутри множества из вершин степени рёбер нет. Тогда человек со степенью может дружить только с людьми вне этого множества, то есть максимум с людьми. Поэтому
Отсюда:
Хотим максимизировать число рёбер , то есть сумму степеней. Заметим, что
то есть можно «заполнить» всех 15 людей степенями в максимально возможных количествах:
Любое появление степени означает, что кого-то пришлось “снять” с степени , а это уменьшит сумму степеней, значит максимум достигается именно так.
Тогда
Пример, где это достигается: разбить людей на группы размеров , дружить всем между разными группами и не дружить внутри групп (полный 5-дольный граф). Тогда степени будут с нужными кратностями.
Ответ: 85.