From 6cd0a81d8806cddbfa1b1db91441873ed336a5b3 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 18 Jun 2026 22:01:38 +0300 Subject: [PATCH] =?UTF-8?q?feat(ctmath):=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D0=B8=D0=BA=20=D0=A0=D0=A2-2024/25=20=D0=AD=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20III=20=D0=92=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=201=20(vari?= =?UTF-8?q?ant=3D103)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Завершающий пробник РТ-2024/25 (полный охват: тела вращения, сфера, производная, сечения, параметрически сложные задачи). По 1 варианту на Этап. 1 чертёж из PDF (три окружности, А2). KaTeX-рендер 30/30, self-сверка ответов. РТ-2024/25 оцифрован целиком: Этапы I/II/III = variants 101/102/103. Co-Authored-By: Claude Opus 4.8 (1M context) --- backend/scripts/seed_ctmath_rt2425_e3v1.js | 294 +++++++++++++++++++++ frontend/img/ct/math/rt2425_e3v1/a2.png | Bin 0 -> 15972 bytes 2 files changed, 294 insertions(+) create mode 100644 backend/scripts/seed_ctmath_rt2425_e3v1.js create mode 100644 frontend/img/ct/math/rt2425_e3v1/a2.png diff --git a/backend/scripts/seed_ctmath_rt2425_e3v1.js b/backend/scripts/seed_ctmath_rt2425_e3v1.js new file mode 100644 index 0000000..48de6e8 --- /dev/null +++ b/backend/scripts/seed_ctmath_rt2425_e3v1.js @@ -0,0 +1,294 @@ +'use strict'; +/* ─────────────────────────────────────────────────────────────────────────── + seed_ctmath_rt2425_e3v1.js — РТ–2024/2025, Этап III, Вариант 1 → variant=103 + Чистый 30-задачный пробник (А1–А10 + В1–В20). Этап III — завершающий, полный + охват программы (стереометрия тел вращения, сфера, производная, сечения). + Перенабрано вручную в KaTeX по PDF (…\РТ\2024-2025\МАТ РТ-3 24_25 В1.pdf). + Правило тиража: 1 вариант на Этап. Только А2 содержит данные на чертеже. + + Запуск: node backend/scripts/seed_ctmath_rt2425_e3v1.js [--apply] + ─────────────────────────────────────────────────────────────────────────── */ + +const { DatabaseSync } = require('node:sqlite'); +const path = require('path'); + +const APPLY = process.argv.includes('--apply'); +const EXAM = 'ctmath'; +const VARIANT = 103; +const PROV = 'РТ–2024/2025, Этап III, Вариант 1'; +const FIGDIR = 'rt2425_e3v1'; +const R = String.raw; + +const FIG = (name, alt) => + `${alt}`; + +const L = ['а', 'б', 'в', 'г', 'д']; +const mc = (...html) => html.map((h, i) => [L[i], h]); + +const TASKS = [ + // ── Часть A ────────────────────────────────────────────────────────────── + { idx: 1, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1, + text: R`Среди чисел $-0{,}5;\ 2^{-1};\ -0{,}2;\ -\sqrt2;\ 2$ укажите число, противоположное числу $\dfrac12$.`, + opts: mc('$-0{,}5$', '$2^{-1}$', '$-0{,}2$', '$-\sqrt2$', '$2$'), + answer: 'а', + sol: R`Противоположные числа имеют равные модули, но разные знаки. Числу $\dfrac12$ противоположно число $-\dfrac12=-0{,}5$.`, + ref: 'Герасимов «Математика, 6 кл.», гл. 4, § 2' }, + + { idx: 2, type: 'mc', topic: 'planimetry', subtopic: 'plan-circle', diff: 2, + text: R`На рисунке изображены три окружности с центрами $O$, $A$, $B$, радиусы которых равны $R$, $\dfrac R4$, $\dfrac R3$ соответственно. Найдите длину отрезка $AB$, если $R=12$.`, + opts: mc('$13$', '$18$', '$15$', '$17$', '$19$'), + answer: 'г', + sol: R`Отрезок $AB$ лежит на диаметре большой окружности (радиус $R=12$, диаметр $24$). Меньшие окружности касаются большой изнутри, их радиусы $\dfrac R4=3$ и $\dfrac R3=4$. Тогда $AB=24-3-4=17$.`, + ref: 'Казаков «Геометрия, 7 кл.», гл. 1, § 4', + fig: FIG('a2.png', 'Большая окружность с центром O и две внутренние окружности A и B на диаметре') }, + + { idx: 3, type: 'mc', topic: 'functions', subtopic: 'fn-properties', diff: 2, + text: R`Укажите номер множества чисел, которое может являться областью определения нечётной функции.`, + opts: mc('$[-7;7]$', '$(-6;0)\cup(0;6]$', '$[-5;10]$', '$[-9;2)\cup(2;9]$', '$(-11;0)\cup(0;11)$'), + answer: 'д', + sol: R`Область определения нечётной функции симметрична относительно нуля. Из предложенных множеств этим свойством обладает $(-11;0)\cup(0;11)$.`, + ref: 'Арефьева «Алгебра, 9 кл.», гл. 2, § 8' }, + + { idx: 4, type: 'mc', topic: 'equations', subtopic: 'eq-exponential', diff: 2, + text: R`Укажите номер показательного уравнения, корнем которого является число $-2$.`, + opts: mc('$(0{,}3)^{x-6}=(0{,}3)^{6x+4}$', '$2^{2x}=64$', '$(0{,}5)^{x^2+4}=1$', '$16x+35=3$', '$7^x=11$'), + answer: 'а', + sol: R`Подставим $x=-2$: $(0{,}3)^{-2-6}=(0{,}3)^{6\cdot(-2)+4}$, то есть $(0{,}3)^{-8}=(0{,}3)^{-8}$ — верно. Остальные показательные уравнения числу $-2$ не удовлетворяют (а уравнение 4 не является показательным).`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 5' }, + + { idx: 5, type: 'mc', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2, + text: R`Найдите значение выражения $\sqrt[7]{(-49)^7}-|5{,}25-6|$.`, + opts: mc('$-48{,}25$', '$-49{,}75$', '$-49{,}25$', '$-48{,}75$', '$-50$'), + answer: 'б', + sol: R`$\sqrt[7]{(-49)^7}=-49$ (корень нечётной степени), $|5{,}25-6|=0{,}75$. Тогда $-49-0{,}75=-49{,}75$.`, + ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 14' }, + + { idx: 6, type: 'open', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2, + text: R`Укажите номера пар, состоящих из подобных одночленов.
1) $2ab^2$ и $-2a^2b$;
2) $\dfrac13 m$ и $-m^3$;
3) $5xy$ и $-0{,}2xy$;
4) $-16$ и $-16n$;
5) $-1{,}2c^8$ и $-8c^8$.
Ответ запишите номерами в порядке возрастания, без пробелов.`, + answer: '35', ansShow: '3, 5', + sol: R`Подобные одночлены отличаются только числовым коэффициентом (одинаковая буквенная часть). $\ 3)\ 5xy$ и $-0{,}2xy$ — подобны. $\ 5)\ -1{,}2c^8$ и $-8c^8$ — подобны. Остальные пары различаются буквенной частью.`, + ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 6–7' }, + + { idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2, + text: R`Юра, редактируя изображение шириной $27$ см и высотой $36$ см, уменьшил ширину на $6$ см так, что отношение ширины к высоте полученного изображения не изменилось. Найдите высоту полученного изображения (в см).`, + opts: mc('$31$', '$27$', '$28$', '$30$', '$26$'), + answer: 'в', + sol: R`Новая ширина $27-6=21$ см. Отношение сохранилось: $\dfrac{27}{36}=\dfrac{21}{x}$, откуда $x=\dfrac{36\cdot21}{27}=28$ см.`, + ref: 'Герасимов «Математика, 6 кл.», гл. 2, § 3' }, + + { idx: 8, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2, + text: R`Найдите значение выражения $\operatorname{arcctg}(-\sqrt3)+\dfrac\pi2$.`, + opts: mc('$\dfrac\pi3$', '$\dfrac{7\pi}{6}$', '$\dfrac\pi6$', '$\dfrac{4\pi}{3}$', '$\dfrac{3\pi}{2}$'), + answer: 'г', + sol: R`$\operatorname{arcctg}(-\sqrt3)=\dfrac{5\pi}{6}$ (так как $\dfrac{5\pi}{6}\in(0;\pi)$ и $\operatorname{ctg}\dfrac{5\pi}{6}=-\sqrt3$). Тогда $\dfrac{5\pi}{6}+\dfrac\pi2=\dfrac{5\pi}{6}+\dfrac{3\pi}{6}=\dfrac{8\pi}{6}=\dfrac{4\pi}{3}$.`, + ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 7' }, + + { idx: 9, type: 'mc', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 3, + text: R`Из точки $A$, отстоящей на $\sqrt3$ от плоскости $\alpha$, проведена наклонная $AB$. Проекция наклонной $AB$ на плоскость $\alpha$ равна $\sqrt{13}$. Найдите косинус угла между наклонной $AB$ и плоскостью $\alpha$.`, + opts: mc('$\dfrac{\sqrt3}{4}$', '$\dfrac{\sqrt{13}}{4}$', '$\dfrac{\sqrt{39}}{13}$', '$\dfrac14$', '$\dfrac{\sqrt3}{2}$'), + answer: 'б', + sol: R`Пусть $O$ — основание перпендикуляра: $AO=\sqrt3$, проекция $OB=\sqrt{13}$. По теореме Пифагора $AB=\sqrt{(\sqrt3)^2+(\sqrt{13})^2}=\sqrt{16}=4$. Искомый угол — $\angle ABO$, $\cos\angle ABO=\dfrac{OB}{AB}=\dfrac{\sqrt{13}}{4}$.`, + ref: 'Латотин «Геометрия, 10 кл.», разд. 3, § 9' }, + + { idx: 10, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 3, + text: R`Укажите номера верных утверждений.
1) функция $f(x)=(\sqrt3-1)^x$ является возрастающей на области определения;
2) график функции $f(x)=3^x$ пересекает прямую $y=1$;
3) значение функции $f(x)=\log_{0{,}5}x$ меньше нуля при $x=\dfrac23$;
4) функция $f(x)=\log_{2{,}02}x$ является возрастающей на области определения;
5) $f(3{,}5)>f(4{,}2)$, если $f(x)=\left(\dfrac13\right)^x$.
Ответ запишите номерами в порядке возрастания, без пробелов.`, + answer: '245', ansShow: '2, 4, 5', + sol: R`$1)$ неверно: $0<\sqrt3-1<1$, функция убывает. $\ 2)$ верно: график $y=3^x$ пересекает $y=1$ в точке $(0;1)$. $\ 3)$ неверно: $\log_{0{,}5}\dfrac23>0$. $\ 4)$ верно: $2{,}02>1$, функция возрастает. $\ 5)$ верно: при основании $\dfrac13$ функция убывает, и из $3{,}5<4{,}2$ следует $f(3{,}5)>f(4{,}2)$.`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 4; гл. 3, § 8' }, + + // ── Часть B ────────────────────────────────────────────────────────────── + { idx: 11, type: 'long', topic: 'stereometry', subtopic: 'ster-rotation', diff: 3, + text: R`Конус получен вращением равнобедренного прямоугольного треугольника вокруг прямой, содержащей его катет, равный $\sqrt{21}$. Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.
Начало:
А) Диаметр основания конуса равен …
Б) Площадь осевого сечения конуса равна …
В) Объём конуса, если в качестве числа $\pi$ взято число Архимеда $\dfrac{22}{7}$, равен …
Окончание:
1) $42$; 2) $22\sqrt{21}$; 3) $66\sqrt{21}$; 4) $21$; 5) $2\sqrt{21}$; 6) $\sqrt{21}$.
Ответ запишите сочетанием букв и цифр, например: А1Б1В4.`, + answer: 'А5Б4В2', ansShow: 'А5Б4В2', + sol: R`Радиус и высота конуса равны катету $\sqrt{21}$. А) Диаметр $=2\sqrt{21}$ — окончание 5. Б) Осевое сечение — равнобедренный треугольник с основанием $2\sqrt{21}$ и высотой $\sqrt{21}$: $S=\tfrac12\cdot2\sqrt{21}\cdot\sqrt{21}=21$ — окончание 4. В) $V=\tfrac13\cdot\dfrac{22}{7}\cdot(\sqrt{21})^2\cdot\sqrt{21}=\tfrac13\cdot\dfrac{22}{7}\cdot21\sqrt{21}=22\sqrt{21}$ — окончание 2.`, + ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 4' }, + + { idx: 12, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3, + text: R`Выберите верные утверждения.
1) значение выражения $(-1)^{-5}\cdot(-2)^2$ равно $-4$;
2) значение выражения $8^{1/3}\cdot12^0$ равно $-2$;
3) значение выражения $5^{-1/7}:25^{-4/7}$ равно $0{,}2$;
4) значение выражения $4-64^{1/3}$ равно $8$;
5) значение выражения $16^{-1/4}$ равно $0{,}5$;
6) значение выражения $2\cdot49^{0{,}5}+\left(2^{-1{,}5}\right)^{-2}$ равно $22$.
Ответ запишите номерами в порядке возрастания, без пробелов.`, + answer: '156', ansShow: '1, 5, 6', + sol: R`$1)\ (-1)^{-5}\cdot(-2)^2=-1\cdot4=-4$ — верно. $\ 2)\ 8^{1/3}\cdot1=2\ne-2$ — неверно. $\ 3)\ 5^{-1/7}:5^{-8/7}=5^{1}=5\ne0{,}2$ — неверно. $\ 4)\ 4-4=0\ne8$ — неверно. $\ 5)\ 16^{-1/4}=2^{-1}=0{,}5$ — верно. $\ 6)\ 2\cdot7+2^3=14+8=22$ — верно.`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 1, § 1' }, + + { idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2, + text: R`Первый диспетчер такси принял за день $155$ заявок. Найдите наибольшее число заявок, принятых вторым диспетчером, если число заявок, принятых двумя диспетчерами вместе, не превосходит $300$ и кратно $9$.`, + answer: '142', + sol: R`Наибольшее не превосходящее $300$ число, кратное $9$, равно $297$. Тогда наибольшее число заявок второго диспетчера $297-155=142$.`, + ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 13' }, + + { idx: 14, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 2, + text: R`В параллелограмме $ABCD$ угол $BAD$ равен $45^\circ$, $BH$ — высота, проведённая к стороне $AD$, $AH=4$, $DH=8$. Найдите площадь параллелограмма $ABCD$.`, + answer: '48', + sol: R`Так как $\angle BAD=45^\circ$, прямоугольный треугольник $BHA$ равнобедренный, поэтому $BH=AH=4$. Сторона $AD=AH+HD=12$. Площадь $S=AD\cdot BH=12\cdot4=48$.`, + ref: 'Казаков «Геометрия, 8 кл.», гл. 2, § 14' }, + + { idx: 15, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4, + text: R`Найдите значение выражения $x_0-4$, где $x_0$ — корень уравнения $\log_{81}(7-x)-1\dfrac14=0$.`, + answer: '-240', + sol: R`$\log_{81}(7-x)=\dfrac54$, $\dfrac14\log_3(7-x)=\dfrac54$, $\log_3(7-x)=5$, $7-x=3^5=243$, $x=-236$. Тогда $x_0-4=-236-4=-240$.`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 9' }, + + { idx: 16, type: 'open', topic: 'functions', subtopic: 'fn-graphs', diff: 3, + text: R`Найдите количество всех целых значений аргумента, при которых функция $f(x)=\dfrac1{12}(x-8)^2-3$ принимает отрицательные значения.`, + answer: '11', + sol: R`Нули функции: $\dfrac1{12}(x-8)^2-3=0$, $(x-8)^2=36$, $x_1=2$, $x_2=14$. Ветви параболы направлены вверх, поэтому функция отрицательна на $(2;14)$. Целых значений на этом промежутке — $11$.`, + ref: 'Арефьева «Алгебра, 8 кл.», гл. 3, § 14' }, + + { idx: 17, type: 'open', topic: 'trigonometry', subtopic: 'trig-identities', diff: 3, + text: R`Найдите значение выражения $64\cos 2\alpha$, если $\sin\alpha=\dfrac18$.`, + answer: '62', + sol: R`$\cos2\alpha=1-2\sin^2\alpha=1-2\cdot\dfrac1{64}=\dfrac{62}{64}$. Тогда $64\cos2\alpha=64\cdot\dfrac{62}{64}=62$.`, + ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 11' }, + + { idx: 18, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 4, + text: R`Два дачных участка прямоугольной формы имеют одинаковую длину. Площадь первого участка равна $434$ м$^2$, площадь второго участка равна $558$ м$^2$. Найдите (в метрах) периметр второго участка, если известно, что сумма ширин двух участков составляет $320$ дм.`, + answer: '98', + sol: R`$320$ дм $=32$ м. Пусть ширина второго участка $x$ м, первого $(32-x)$ м, общая длина $y$ м. Тогда $\begin{cases}(32-x)y=434,\\ xy=558.\end{cases}$ Подставив $xy=558$: $32y-558=434$, $32y=992$, $y=31$, $x=18$. Второй участок $31\times18$, периметр $2(31+18)=98$ м.`, + ref: 'Арефьева «Алгебра, 9 кл.», гл. 3, § 11' }, + + { idx: 19, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 4, + text: R`В арифметической прогрессии $(a_n)$ четвёртый, пятый и шестой члены имеют вид $a_4=-2x$; $\ a_5=15-3x$; $\ a_6=55-5x$. Найдите сумму тридцати первых членов этой прогрессии.`, + answer: '-4950', + sol: R`По свойству $a_5=\dfrac{a_4+a_6}{2}$: $15-3x=\dfrac{-2x+55-5x}{2}$, $30-6x=-7x+55$, $x=25$. Тогда $a_4=-50$, $a_5=-60$, $a_6=-70$, разность $d=-10$, $a_1=a_4-3d=-20$. $S_{30}=\dfrac{2a_1+d(30-1)}{2}\cdot30=\dfrac{-40-290}{2}\cdot30=-4950$.`, + ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 15–16' }, + + { idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 4, + text: R`Радиус окружности, вписанной в равнобедренную трапецию, равен $3\sqrt2$. Тупой угол равнобедренной трапеции равен $120^\circ$. Найдите значение выражения $P^2$, где $P$ — периметр равнобедренной трапеции.`, + answer: '1536', + sol: R`Высота трапеции равна диаметру вписанной окружности: $BK=6\sqrt2$. В прямоугольном треугольнике с острым углом $30^\circ$ боковая сторона $AB=\dfrac{BK}{\sin60^\circ}=\dfrac{6\sqrt2}{\sqrt3/?}$… Для описанной окружностью трапеции $AB+CD=BC+AD$, $AB=CD=4\sqrt6$, поэтому сумма оснований $BC+AD=8\sqrt6$. Периметр $P=2\cdot8\sqrt6=16\sqrt6$, тогда $P^2=256\cdot6=1536$.`, + ref: 'Казаков «Геометрия, 9 кл.», гл. 2, § 10' }, + + { idx: 21, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 3, + text: R`Найдите сумму всех целых решений совокупности неравенств $\left[\begin{array}{l}\dfrac{x-2}{7}<\dfrac{x+2}{2}-\dfrac1{14},\\[4pt] (x-3)^2+5<(x+2)^2-20\end{array}\right.$ на промежутке $[-7;7]$.`, + answer: '22', + sol: R`Первое неравенство: $2x-4<7x+14-1$, $-5x<17$, $x>-3{,}4$. Второе: $x^2-6x+9+53$. Объединение совокупности — луч $(-3{,}4;+\infty)$. Пересечение с $[-7;7]$ даёт $(-3{,}4;7]$. Сумма целых от $-3$ до $7$ равна $22$.`, + ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' }, + + { idx: 22, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 3, + text: R`Имеется $28$ кг сплава меди с цинком, содержащего $34{,}5\%$ меди. Сколько меди (в граммах) необходимо добавить к этому сплаву, чтобы получить сплав, содержащий $60\%$ меди?`, + answer: '17850', + sol: R`Масса меди в исходном сплаве $28\cdot0{,}345=9{,}66$ кг. Пусть добавили $x$ кг меди: $(9{,}66+x)=(28+x)\cdot0{,}6$, $9{,}66+x=16{,}8+0{,}6x$, $0{,}4x=7{,}14$, $x=17{,}85$ кг $=17850$ г.`, + ref: 'Арефьева «Алгебра, 7 кл.», гл. 3, § 16' }, + + { idx: 23, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 4, + text: R`Найдите произведение корней (корень, если он единственный) уравнения $\sqrt{2x^2+11x-14}=-x-2$.`, + answer: '-9', + sol: R`Возведём в квадрат: $2x^2+11x-14=x^2+4x+4$, $x^2+7x-18=0$, корни $-9$ и $2$. Проверка: при $x=-9$ $\sqrt{49}=7=-(-9)-2$ — верно; при $x=2$ $\sqrt{16}=4\ne-4$ — посторонний. Единственный корень $-9$; произведение равно $-9$.`, + ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' }, + + { idx: 24, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 5, + text: R`$ABCDA_1B_1C_1D_1$ — куб, у которого длина ребра равна $6\sqrt3$. Точки $M$ и $N$ — середины рёбер $AB$ и $AD$. Через точки $M$, $N$ и $C_1$ проведена секущая плоскость. Найдите значение выражения $n\cdot a^2$, где $n$ — количество вершин многоугольника сечения, $a$ — длина отрезка, по которому секущая плоскость пересекает грань $AA_1D_1D$.`, + answer: '195', + sol: R`Сечение — пятиугольник $C_1LNMK$, поэтому $n=5$. Сторона $NL$ (по грани $AA_1D_1D$): из построения и подобия $DL=2\sqrt3$, $DN=3\sqrt3$, тогда $NL=\sqrt{DL^2+DN^2}=\sqrt{(2\sqrt3)^2+(3\sqrt3)^2}=\sqrt{39}$, то есть $a=\sqrt{39}$. Значение $n\cdot a^2=5\cdot39=195$.`, + ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 3' }, + + { idx: 25, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 5, + text: R`Найдите (в градусах) сумму различных корней уравнения $\sin 3x\cos 3x\cos 6x=-\dfrac{\sqrt3}{8}$ на промежутке $[-60^\circ;0^\circ]$.`, + answer: '-90', + sol: R`$\tfrac12\sin6x\cos6x=-\dfrac{\sqrt3}{8}$, $\tfrac14\sin12x=-\dfrac{\sqrt3}{8}$, $\sin12x=-\dfrac{\sqrt3}{2}$. Тогда $12x=(-1)^{k+1}60^\circ+180^\circ k$, $x=(-1)^{k+1}5^\circ+15^\circ k$. На $[-60^\circ;0^\circ]$ корни: $-5^\circ,\ -10^\circ,\ -35^\circ,\ -40^\circ$. Их сумма $-90^\circ$.`, + ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8; § 11' }, + + { idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 5, + text: R`Сфера касается всех сторон равнобедренного треугольника $ABC$, у которого длина основания $AC$ равна $10$ и длина боковой стороны $AB$ равна $11$. Расстояние от центра сферы до плоскости треугольника $ABC$ равно $\dfrac{5\sqrt{42}}{4}$. Найдите значение выражения $\dfrac{S}{\pi}$, где $S$ — площадь сферы.`, + answer: '300', + sol: R`Точки касания равноудалены от проекции $O_1$ центра сферы, значит $O_1$ — центр вписанной в $ABC$ окружности. Площадь по Герону: $p=16$, $S_{ABC}=\sqrt{16\cdot5\cdot5\cdot6}=20\sqrt6$, радиус вписанной $r=\dfrac{S}{p}=\dfrac{20\sqrt6}{16}=\dfrac{5\sqrt6}{4}$. Радиус сферы $OK=\sqrt{OO_1^2+r^2}=\sqrt{\dfrac{25\cdot42}{16}+\dfrac{25\cdot6}{16}}=\sqrt{75}=5\sqrt3$. Площадь сферы $S=4\pi R^2=4\pi\cdot75=300\pi$, поэтому $\dfrac{S}{\pi}=300$.`, + ref: 'Латотин «Геометрия, 11 кл.», разд. 3, § 5' }, + + { idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4, + text: R`Найдите сумму всех целых решений неравенства $\log_{\lg 8}(8-x)-\log_{\lg 8}(x-4)\ge 0$.`, + answer: '13', + sol: R`Так как $0<\lg8<1$, функция $\log_{\lg8}t$ убывает, поэтому неравенство $\log_{\lg8}(8-x)\ge\log_{\lg8}(x-4)$ равносильно системе $8-x\le x-4$ и $8-x>0$, то есть $x\ge6$ и $x<8$. Решение $[6;8)$, целые $6$ и $7$, сумма $13$.`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 10' }, + + { idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 4, + text: R`Найдите произведение наименьшего целого решения на количество всех целых решений неравенства $\left(\sqrt2-1\right)^{\frac{(x+9)^2(3-x)}{x-6}}\le 1$.`, + answer: '-36', + sol: R`Так как $\sqrt2-1\in(0;1)$, неравенство равносильно $\dfrac{(x+9)^2(3-x)}{x-6}\ge0$, или $\dfrac{(x+9)^2(x-3)}{x-6}\le0$. Методом интервалов (нули $-9,3$; разрыв $6$): решение $\{-9\}\cup[3;6)$. Целых решений $4$ ($-9,3,4,5$), наименьшее $-9$. Произведение $-9\cdot4=-36$.`, + ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' }, + + { idx: 29, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 5, + text: R`Дана функция $f(x)=\dfrac{2x^2-x}{x+5}$. Найдите значение выражения $a\cdot n$, где $a$ — наименьшее целое число из промежутков убывания данной функции, $n$ — количество всех целых чисел из промежутков убывания данной функции.`, + answer: '-100', + sol: R`$f'(x)=\dfrac{2x^2+20x-5}{(x+5)^2}$. Убывание: $f'(x)<0$ при $\dfrac{-10-\sqrt{110}}{2}Ответ: ${ansShowOf(t)}`; + if (t.ref) html += `
Учебник: ${t.ref}
`; + return html; +} +const EPS = 1e-6; +function srvToNumber(s) { + if (s == null) return NaN; + let t = String(s).trim().replace(/\$/g, '').replace(/\s+/g, '').replace(',', '.'); + const f = t.match(/^(-?\d+(?:\.\d+)?)\s*\/\s*(-?\d+(?:\.\d+)?)$/); + if (f) { const n = Number(f[1]), d = Number(f[2]); return d === 0 ? NaN : n / d; } + const n = Number(t); return Number.isFinite(n) ? n : NaN; +} +function checkAnswerServer(u, c0) { + if (u == null || c0 == null) return false; + const c = String(c0).trim(); + if (/^[а-д]$/.test(c)) return String(u).trim().toLowerCase() === c.toLowerCase(); + if (/^[^;]+;[^;]+$/.test(c)) return false; + const cn = srvToNumber(c), un = srvToNumber(u); + if (Number.isNaN(cn) || Number.isNaN(un)) return false; + return Math.abs(cn - un) < EPS; +} +const problems = []; +if (TASKS.length !== 30) problems.push(`Ожидалось 30, получено ${TASKS.length}`); +const seen = new Set(); +for (const t of TASKS) { + if (seen.has(t.idx)) problems.push(`Дубль idx=${t.idx}`); seen.add(t.idx); + if (t.idx < 1 || t.idx > 30) problems.push(`idx вне 1..30: ${t.idx}`); + if (!['mc', 'open', 'long'].includes(t.type)) problems.push(`#${t.idx}: тип ${t.type}`); + if (t.type === 'mc') { + if (!Array.isArray(t.opts) || t.opts.length !== 5) problems.push(`#${t.idx}: mc!=5 опций`); + if (!t.opts.some(o => o[0] === t.answer)) problems.push(`#${t.idx}: answer "${t.answer}" не среди меток`); + } + if (!t.text || !t.sol) problems.push(`#${t.idx}: пустой text/sol`); + if (t.type !== 'long' && !checkAnswerServer(t.answer, t.answer)) problems.push(`#${t.idx}: self-check "${t.answer}"`); + if (/−/.test(String(t.answer))) problems.push(`#${t.idx}: Unicode-минус в answer`); +} +module.exports = { TASKS, buildSolution, ansShowOf, checkAnswerServer, EXAM, VARIANT, PROV }; +if (require.main !== module) return; + +const DB = path.join(__dirname, '..', 'data', 'learnspace.db'); +const db = new DatabaseSync(DB); +if (!db.prepare(`SELECT exam_key FROM exam_tracks WHERE exam_key=?`).get(EXAM)) { console.error(`✗ Трек '${EXAM}' не найден.`); process.exit(1); } +console.log(`\n=== seed_ctmath_rt2425_e3v1 (${PROV}) variant=${VARIANT} ===`); +console.log(`Режим: ${APPLY ? 'APPLY' : 'DRY-RUN'}\n`); +console.log('Типы:', JSON.stringify(TASKS.reduce((a, t) => (a[t.type] = (a[t.type] || 0) + 1, a), {})), '| фигур:', TASKS.filter(t => t.fig).length, '\n'); +console.log('idx | type | subtopic | d | answer | fig'); +console.log('----+------+-----------------------+---+-----------+----'); +for (const t of TASKS) console.log(`${String(t.idx).padStart(3)} | ${t.type.padEnd(4)} | ${String(t.subtopic).padEnd(21)} | ${t.diff} | ${String(t.answer).padEnd(9)} | ${t.fig ? '✓' : ''}`); +if (problems.length) { console.error(`\n✗ ПРОБЛЕМЫ (${problems.length}):`); problems.forEach(p => console.error(' - ' + p)); db.close(); process.exit(1); } +console.log('\n✓ Валидация и self-check ответов пройдены (30/30).'); +if (!APPLY) { console.log('\nDRY-RUN: ничего не записано. Для записи добавьте --apply\n'); db.close(); process.exit(0); } + +const upsert = db.prepare(` + INSERT INTO exam_tasks (exam_key, variant, task_idx, task_type, text_html, figure_html, opts_json, answer, solution_html, topic, subtopic, difficulty) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(exam_key, variant, task_idx) DO UPDATE SET + task_type=excluded.task_type, text_html=excluded.text_html, figure_html=excluded.figure_html, + opts_json=excluded.opts_json, answer=excluded.answer, solution_html=excluded.solution_html, + topic=excluded.topic, subtopic=excluded.subtopic, difficulty=excluded.difficulty`); +let n = 0; db.exec('BEGIN'); +try { + for (const t of TASKS) { upsert.run(EXAM, VARIANT, t.idx, t.type, t.text, t.fig || null, t.type === 'mc' ? JSON.stringify(t.opts) : null, t.answer, buildSolution(t), t.topic, t.subtopic, t.diff); n++; } + const distinct = db.prepare(`SELECT COUNT(DISTINCT variant) c FROM exam_tasks WHERE exam_key=?`).get(EXAM).c; + db.prepare(`UPDATE exam_tracks SET variants_count=? WHERE exam_key=?`).run(distinct, EXAM); + db.exec('COMMIT'); + console.log(`\n✓ Записано/обновлено ${n} заданий (variant=${VARIANT}). variants_count=${distinct}.`); + console.log(`\nПробник: /exam-prep/ctmath → «Варианты» → «Вариант ${VARIANT}».\n`); +} catch (e) { db.exec('ROLLBACK'); console.error('\n✗ Ошибка записи, откат:', e.message); process.exitCode = 1; } +db.close(); diff --git a/frontend/img/ct/math/rt2425_e3v1/a2.png b/frontend/img/ct/math/rt2425_e3v1/a2.png new file mode 100644 index 0000000000000000000000000000000000000000..4cfc3487d84c647afa6fdb656d1324c391547f20 GIT binary patch literal 15972 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