feat(ctmath): пробник РТ-2023/24 этап II (вариант 105)

30 заданий А1–А10 + В1–В20, перенабор по PDF РИКЗ.
8 mc + 21 open + 1 long; геометрия закодирована текстом.
Идемпотентный seed (upsert), DRY-RUN по умолчанию. Метка 105
уже в VARIANT_LABEL. Запуск с --apply — пользователь.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-19 10:17:36 +03:00
parent fd656ed63f
commit ddb49cf0c1
+364
View File
@@ -0,0 +1,364 @@
'use strict';
/* ───────────────────────────────────────────────────────────────────────────
seed_ctmath_rt2324_e2v1.js
Чистый вариант-пробник для трека exam-prep `ctmath`.
Источник: РТ–2023/2024, Этап II, Вариант 1 (РИКЗ, «Тематическое
консультирование по математике»). 30 заданий: А1–А10 + В1–В20.
Перенабрано вручную в KaTeX по PDF (визуальное чтение, НЕ OCR):
F:\!Рабочие\ЦТ\Математика\Математика\РТ\2023-2024\МАТ РТ-2 23_24 В1.pdf
variant=105 — Этап II РТ-2023/24 (этап I — 104, этап III — 106).
Геометрия закодирована текстом (стандартная разметка фигур / углы словами) —
отдельных чертежей не требуется (как у большинства существующих задач).
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
Запуск:
node backend/scripts/seed_ctmath_rt2324_e2v1.js # DRY-RUN (по умолчанию)
node backend/scripts/seed_ctmath_rt2324_e2v1.js --apply # запись в БД
⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную (авто-режим Claude Code
блокирует продакшн-записи). Без --apply ничего не пишется.
─────────────────────────────────────────────────────────────────────────── */
const { DatabaseSync } = require('node:sqlite');
const path = require('path');
const APPLY = process.argv.includes('--apply');
const EXAM = 'ctmath';
const VARIANT = 105;
const PROV = 'РТ–2023/2024, Этап II, Вариант 1';
const R = String.raw;
/* opts: метки кириллица а–д (как в существующих строках ctmath; checkAnswerServer
имеет ветку /^[а-д]$/). РТ-варианты 1..5 → а..д. */
const L = ['а', 'б', 'в', 'г', 'д'];
const mc = (...html) => html.map((h, i) => [L[i], h]);
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
const TASKS = [
// ── Часть A: А1–А10 ──────────────────────────────────────────────────────
{ idx: 1, type: 'mc', topic: 'stereometry', subtopic: 'ster-basics', diff: 2,
text: R`Дана треугольная пирамида $SABC$. Точка $K$ принадлежит ребру $SC$. Среди прямых $SB$, $AK$, $SC$, $BK$, $BA$ укажите прямую, по которой пересекаются плоскости $BKA$ и $SBC$.`,
opts: mc('$SB$', '$AK$', '$SC$', '$BK$', '$BA$'),
answer: 'г',
sol: R`Точка $K$ лежит на ребре $SC$, поэтому она принадлежит плоскости $SBC$. Точки $B$ и $K$ принадлежат обеим плоскостям $BKA$ и $SBC$, значит, плоскости пересекаются по прямой $BK$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 2' },
{ idx: 2, type: 'mc', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Наименьшим целым числом, принадлежащим области определения функции $y=\log_5(x+6)$, является число:`,
opts: mc('$-7$', '$-6$', '$-5$', '$-1$', '$0$'),
answer: 'в',
sol: R`Логарифмическая функция $y=\log_5 t$ определена при $t>0$, поэтому $x+6>0$, то есть $x>-6$ и $D(y)=(-6;+\infty)$. Наименьшее целое число из этого промежутка — $-5$.`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 8' },
{ idx: 3, type: 'mc', topic: 'equations', subtopic: 'eq-linear', diff: 1,
text: R`Укажите номер числового промежутка, который является решением неравенства $x\ge-10$.`,
opts: mc('$(-10;+\infty)$', '$[-10;+\infty)$', '$(-\infty;-10]$', '$(-\infty;-10)$', '$[-10;0)$'),
answer: 'б',
sol: R`Решением неравенства $x\ge-10$ является числовой луч $[-10;+\infty)$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 56' },
{ idx: 4, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 1,
text: R`Укажите номер функции, графиком которой является гипербола.`,
opts: mc('$f(x)=-x^{2}+7$', '$f(x)=x^{3}$', '$f(x)=|x|-7$', '$f(x)=-\dfrac{x}{7}$', '$f(x)=-\dfrac{7}{x}$'),
answer: 'д',
sol: R`Графиком обратной пропорциональности $y=\dfrac{k}{x}$ ($k\ne0$) является гипербола. Среди предложенных функций обратную пропорциональность задаёт только $f(x)=-\dfrac{7}{x}$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3, § 13' },
{ idx: 5, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2,
text: R`Укажите номер уравнения, равносильного уравнению $x=6$.`,
opts: mc('$\sqrt{x-5}=1$', '$\log_6 x=0$', '$x^{2}=6$', '$x+6=0$', '$6^{x}=36$'),
answer: 'а',
sol: R`Уравнения равносильны, если имеют одно и то же множество корней. Уравнение $\sqrt{x-5}=1$ даёт $x-5=1$, то есть $x=6$ — то же множество корней. (Остальные: $\log_6 x=0\Rightarrow x=1$; $x^{2}=6\Rightarrow x=\pm\sqrt6$; $x+6=0\Rightarrow x=-6$; $6^{x}=36\Rightarrow x=2$.)`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3, § 15' },
{ idx: 6, type: 'open', topic: 'numbers', subtopic: 'num-real', diff: 2,
text: R`Укажите номера верных неравенств.<br>1) $\sqrt5<2$;<br>2) $3<2\sqrt3$;<br>3) $\sqrt{(-4)^{2}}<-3$;<br>4) $0{,}82>\sqrt{0{,}81}$;<br>5) $\sqrt{(-5)^{2}}>\sqrt{(-3)^{2}}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '25', ansShow: '2, 5',
sol: R`$1)$ неверно: возведя в квадрат, получим ложное $5<4$. $\ 2)$ верно: $9<12$. $\ 3)$ неверно: $\sqrt{(-4)^{2}}=4$, а $4<-3$ ложно. $\ 4)$ неверно: $\sqrt{0{,}81}=0{,}9$, а $0{,}82>0{,}9$ ложно. $\ 5)$ верно: $\sqrt{(-5)^{2}}=5$, $\sqrt{(-3)^{2}}=3$, и $5>3$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 14' },
{ idx: 7, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Найдите расстояние (в километрах) между двумя посёлками, если $\dfrac49$ этого расстояния на $10$ км меньше всего расстояния между ними.`,
opts: mc('$22{,}5$', '$20$', '$15$', '$24$', '$18$'),
answer: 'д',
sol: R`Числу $10$ соответствует дробь $1-\dfrac49=\dfrac59$ всего расстояния. Тогда расстояние равно $10:\dfrac59=\dfrac{10\cdot9}{5}=18$ (км).`,
ref: 'Герасимов «Математика, 5 кл.», ч. 2, гл. 3, § 10' },
{ idx: 8, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
text: R`Радиус основания конуса равен $7$. Если осевым сечением конуса является равносторонний треугольник, то образующая конуса равна:`,
opts: mc('$7$', '$3{,}5$', '$14$', '$6$', '$7\sqrt2$'),
answer: 'в',
sol: R`Осевое сечение конуса — равнобедренный треугольник с основанием, равным диаметру, и боковыми сторонами, равными образующим. Если это равносторонний треугольник, то образующая равна диаметру основания, то есть $2\cdot7=14$.`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 4' },
{ idx: 9, type: 'mc', topic: 'trigonometry', subtopic: 'trig-identities', diff: 2,
text: R`Найдите значение выражения $\sqrt6\cdot\cos(-135^\circ)$.`,
opts: mc('$\dfrac{3\sqrt2}{2}$', '$-\sqrt3$', '$-\dfrac{3\sqrt2}{2}$', '$-\dfrac{\sqrt6}{2}$', '$\sqrt3$'),
answer: 'б',
sol: R`$\sqrt6\cdot\cos(-135^\circ)=\sqrt6\cdot\cos135^\circ=\sqrt6\cdot\cos(180^\circ-45^\circ)=-\sqrt6\cdot\cos45^\circ=-\sqrt6\cdot\dfrac{\sqrt2}{2}=-\sqrt3.$`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 2; § 9' },
{ idx: 10, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Укажите номера выражений, которые не имеют смысла при $x=-5$.<br>1) $\sqrt{x-5}$;<br>2) $\dfrac{1}{\sqrt{5-x}}$;<br>3) $\dfrac{1}{\sqrt{x+5}}$;<br>4) $\sqrt{-x-5}$;<br>5) $\sqrt{x+5}$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '13', ansShow: '1, 3',
sol: R`$1)$ $\sqrt{x-5}$ имеет смысл при $x\ge5$; число $-5$ не входит — нет смысла. $\ 2)$ $\dfrac{1}{\sqrt{5-x}}$ имеет смысл при $x<5$ — смысл есть. $\ 3)$ $\dfrac{1}{\sqrt{x+5}}$ имеет смысл при $x>-5$; число $-5$ не входит — нет смысла. $\ 4)$ $\sqrt{-x-5}$ имеет смысл при $x\le-5$ — смысл есть. $\ 5)$ $\sqrt{x+5}$ имеет смысл при $x\ge-5$ — смысл есть.`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 4' },
// ── Часть B: В1–В20 ──────────────────────────────────────────────────────
{ idx: 11, type: 'open', topic: 'planimetry', subtopic: 'plan-triangles', diff: 3,
text: R`Дан прямоугольный треугольник $ABC$ ($\angle ABC=90^\circ$), в котором катет $AB=\sqrt7$, катет $BC=\sqrt2$. Выберите верные утверждения.<br>1) площадь треугольника $ABC$ равна $\sqrt{14}$;<br>2) косинус угла $ACB$ равен $\dfrac{\sqrt2}{3}$;<br>3) синус угла $BAC$ равен $\dfrac{\sqrt7}{3}$;<br>4) тангенс угла $ACB$ равен $\dfrac{\sqrt{14}}{7}$;<br>5) котангенс угла $BAC$ равен $\dfrac{\sqrt{14}}{2}$;<br>6) радиус окружности, описанной около треугольника $ABC$, равен $1{,}5$.<br><i>Ответ запишите цифрами в порядке возрастания, без пробелов.</i>`,
answer: '256', ansShow: '2, 5, 6',
sol: R`По теореме Пифагора $AC=\sqrt{AB^{2}+BC^{2}}=\sqrt{7+2}=3$. $\ 1)$ неверно: $S=\dfrac12\cdot\sqrt7\cdot\sqrt2=\dfrac{\sqrt{14}}{2}$. $\ 2)$ верно: $\cos\angle ACB=\dfrac{BC}{AC}=\dfrac{\sqrt2}{3}$. $\ 3)$ неверно: $\sin\angle BAC=\dfrac{BC}{AC}=\dfrac{\sqrt2}{3}$. $\ 4)$ неверно: $\operatorname{tg}\angle ACB=\dfrac{AB}{BC}=\dfrac{\sqrt7}{\sqrt2}=\dfrac{\sqrt{14}}{2}$. $\ 5)$ верно: $\operatorname{ctg}\angle BAC=\dfrac{AB}{BC}=\dfrac{\sqrt{14}}{2}$. $\ 6)$ верно: радиус описанной около прямоугольного треугольника окружности равен половине гипотенузы, то есть $1{,}5$.`,
ref: 'Казаков «Геометрия, 8 кл.», гл. 2, § 1516' },
{ idx: 12, type: 'long', topic: 'functions', subtopic: 'fn-properties', diff: 2,
text: R`Для начала каждого из предложений А–В подберите его окончание 1–6 так, чтобы получилось верное утверждение.<br><b>Начало:</b><br>А) Если функция $y=f(x)$ является чётной и $f(6)=-5$, то $f(-6)$ равно …<br>Б) Если функция $y=g(x)$ является нечётной и $g(-3)=2$, то $g(3)$ равно …<br>В) Если функция $y=h(x)$ является чётной и $h(1)=2$, а функция $y=p(x)$ является нечётной и $p(1)=15$, то значение выражения $h(-1)\cdot p(-1)$ равно …<br><b>Окончание:</b><br>1) $30$;&emsp;2) $5$;&emsp;3) $-2$;&emsp;4) $2$;&emsp;5) $-30$;&emsp;6) $-5$.<br><i>Ответ запишите сочетанием букв и цифр, например: А1Б1В4.</i>`,
answer: 'А6Б3В5', ansShow: 'А6Б3В5',
sol: R`А) Для чётной функции $f(-x)=f(x)$, поэтому $f(-6)=f(6)=-5$ — окончание 6. Б) Для нечётной функции $g(-x)=-g(x)$, поэтому $g(3)=-g(-3)=-2$ — окончание 3. В) $h(-1)=h(1)=2$, $p(-1)=-p(1)=-15$, тогда $h(-1)\cdot p(-1)=2\cdot(-15)=-30$ — окончание 5.`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2, § 8' },
{ idx: 13, type: 'open', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
text: R`Наибольшее натуральное число, которое при делении на $16$ с остатком даёт неполное частное, равное $6$, равно …`,
answer: '111',
sol: R`При делении с остатком на $16$ наибольший возможный остаток равен $15$. По формуле $a=q\cdot b+r$ получаем наибольшее число $16\cdot6+15=111$.`,
ref: 'Герасимов «Математика, 5 кл.», ч. 1, гл. 1, § 11' },
{ idx: 14, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 2,
text: R`Найдите значение выражения $5^{\,1+2\log_5 8}$.`,
answer: '320',
sol: R`$5^{\,1+2\log_5 8}=5\cdot\left(5^{\log_5 8}\right)^{2}=5\cdot8^{2}=5\cdot64=320.$`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 1, § 3; гл. 3, § 7' },
{ idx: 15, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`Длина ребра основания правильной треугольной призмы $ABCA_1B_1C_1$ относится к длине бокового ребра как $12:5$. Найдите длину $l$ замкнутой ломаной $BCA_1AB$, если длина бокового ребра равна $5\sqrt6$. В ответ запишите значение выражения $l\cdot\sqrt6$.`,
answer: '252',
sol: R`Боковое ребро $A_1A=5\sqrt6$, тогда из отношения $\dfrac{AB}{5\sqrt6}=\dfrac{12}{5}$ находим ребро основания $AB=BC=AC=12\sqrt6$. Диагональ боковой грани $CA_1=\sqrt{AC^{2}+A_1A^{2}}=\sqrt{(12\sqrt6)^{2}+(5\sqrt6)^{2}}=\sqrt{864+150}=\sqrt{1014}=13\sqrt6$. Замкнутая ломаная $BCA_1AB$ равна $BC+CA_1+A_1A+AB=12\sqrt6+13\sqrt6+5\sqrt6+12\sqrt6=42\sqrt6$, то есть $l=42\sqrt6$. Тогда $l\cdot\sqrt6=42\cdot6=252$.`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 12' },
{ idx: 16, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
text: R`Проездной билет на месяц стоит $42$ рубля, а стоимость билета на одну поездку составляет $2\%$ от стоимости проездного билета на месяц. Какую сумму (в рублях) сэкономил Витя, если он купил проездной билет на месяц и сделал по нему за месяц $75$ поездок?`,
answer: '21',
sol: R`Стоимость билета на одну поездку равна $42\cdot0{,}02=0{,}84$ рубля. За $75$ поездок без проездного Витя заплатил бы $75\cdot0{,}84=63$ рубля. Таким образом, он сэкономил $63-42=21$ рубль.`,
ref: 'Герасимов «Математика, 6 кл.», гл. 2, § 12' },
{ idx: 17, type: 'open', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
text: R`Найдите сумму бесконечно убывающей геометрической прогрессии, у которой второй член равен $14$, а знаменатель равен $\dfrac23$.`,
answer: '63',
sol: R`Первый член $b_1=\dfrac{b_2}{q}=\dfrac{14}{2/3}=21$. По формуле суммы бесконечно убывающей прогрессии $S=\dfrac{b_1}{1-q}=\dfrac{21}{1-\frac23}=\dfrac{21}{1/3}=63.$`,
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4, § 19' },
{ idx: 18, type: 'open', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2,
text: R`Найдите значение выражения $\left(0{,}6\sqrt{x}+\sqrt[4]{y}\right)^{2}-\left(0{,}6\sqrt{x}-\sqrt[4]{y}\right)^{2}$ при $x=300$, $y=9$.`,
answer: '72',
sol: R`По формуле разности квадратов выражение равно $\left(0{,}6\sqrt{x}+\sqrt[4]{y}+0{,}6\sqrt{x}-\sqrt[4]{y}\right)\left(0{,}6\sqrt{x}+\sqrt[4]{y}-0{,}6\sqrt{x}+\sqrt[4]{y}\right)=1{,}2\sqrt{x}\cdot2\sqrt[4]{y}=2{,}4\sqrt{x}\,\sqrt[4]{y}$. При $x=300$, $y=9$: $2{,}4\sqrt{300}\,\sqrt[4]{9}=2{,}4\cdot10\sqrt3\cdot\sqrt3=2{,}4\cdot10\cdot3=72.$`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2, § 1213' },
{ idx: 19, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 2,
text: R`Найдите наибольшее целое решение совокупности неравенств $\left[\begin{array}{l}3x+10<0,\\[2pt]-\dfrac12\,x-3>0.\end{array}\right.$`,
answer: '-4',
sol: R`$3x+10<0\Rightarrow x<-\dfrac{10}{3}=-3\dfrac13$; $\ -\dfrac12x-3>0\Rightarrow x<-6$. Объединение открытых лучей есть множество $x\in\left(-\infty;-3\dfrac13\right)$. Наибольшее целое решение равно $-4$.`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1, § 6' },
{ idx: 20, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 3,
text: R`В трапеции $ABCD$ основания $BC$ и $AD$ равны $16$ и $18$ соответственно. Диагонали трапеции пересекаются в точке $O$, причём $OA=9$. Найдите длину диагонали $AC$.`,
answer: '17',
sol: R`Треугольники $AOD$ и $COB$ подобны по двум углам ($\angle AOD=\angle COB$ как вертикальные, $\angle OAD=\angle OCB$ как накрест лежащие при $BC\parallel AD$ и секущей $AC$). Из подобия $\dfrac{BC}{AD}=\dfrac{CO}{AO}$, то есть $\dfrac{16}{18}=\dfrac{CO}{9}$, откуда $CO=8$. Тогда $AC=AO+CO=9+8=17.$`,
ref: 'Казаков «Геометрия, 8 кл.», гл. 1, § 1011; гл. 3, § 21' },
{ idx: 21, type: 'open', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3,
text: R`Найдите сумму всех целых значений переменной $x$, при которых имеет смысл выражение $\sqrt{12x-x^{2}}+\dfrac{x}{\sqrt{(x+2)(9-x)}}$.`,
answer: '36',
sol: R`Выражение имеет смысл при $\begin{cases}12x-x^{2}\ge0,\\(x+2)(9-x)>0.\end{cases}$ Первое неравенство даёт $x\in[0;12]$, второе — $x\in(-2;9)$. Пересечение — полуинтервал $[0;9)$. Сумма всех целых из него: $0+1+2+\ldots+8=36.$`,
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3, § 16' },
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-linear', diff: 3,
text: R`Катер прошёл $21$ км по течению реки за $1$ ч $30$ мин, а против течения реки за такое же время — только $18$ км. Найдите (в км/ч) собственную скорость катера, если она и скорость течения реки были постоянными.`,
answer: '13',
sol: R`Пусть собственная скорость катера $x$ км/ч, скорость течения $y$ км/ч. За $1{,}5$ ч: $(x+y)\cdot1{,}5=21$ и $(x-y)\cdot1{,}5=18$, то есть $\begin{cases}x+y=14,\\x-y=12.\end{cases}$ Сложив уравнения, получаем $2x=26$, $x=13.$`,
ref: 'Арефьева «Алгебра, 7 кл.», гл. 4, § 25' },
{ idx: 23, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 3,
text: R`Длина ребра куба $ABCDA_1B_1C_1D_1$ равна $7\sqrt2$. Найдите значение выражения $\sqrt3\cdot S$, где $S$ — площадь сечения этого куба плоскостью, проходящей через точки $A_1$, $B$, $D$.`,
answer: '147',
sol: R`Сечение — треугольник $A_1BD$, стороны которого являются диагоналями граней куба: $A_1B=A_1D=BD=7\sqrt2\cdot\sqrt2=14$. Это равносторонний треугольник со стороной $14$, его площадь $S=\dfrac{14^{2}\sqrt3}{4}=49\sqrt3$. Тогда $\sqrt3\cdot S=\sqrt3\cdot49\sqrt3=147.$`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 1, § 3' },
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 3,
text: R`Найдите сумму всех целых решений неравенства $3^{\,2x+18}-10\cdot3^{\,x+9}+9\le0$.`,
answer: '-24',
sol: R`Пусть $t=3^{\,x+9}$, тогда неравенство примет вид $t^{2}-10t+9\le0$, откуда $1\le t\le9$. Значит, $3^{0}\le3^{\,x+9}\le3^{2}$, то есть $0\le x+9\le2$ и $-9\le x\le-7$. Целые решения $-9,\,-8,\,-7$; их сумма равна $-24.$`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2, § 6' },
{ idx: 25, type: 'open', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
text: R`Найдите (в градусах) сумму различных корней уравнения $\cos5x\cos2x+\sin5x\sin2x=0$ на промежутке $(0^\circ;135^\circ)$.`,
answer: '120',
sol: R`По формуле косинуса разности левая часть равна $\cos(5x-2x)=\cos3x$. Уравнение $\cos3x=0$ даёт $3x=90^\circ+180^\circ n$, $x=30^\circ+60^\circ n$. Промежутку $(0^\circ;135^\circ)$ принадлежат корни $30^\circ$ (при $n=0$) и $90^\circ$ (при $n=1$). Их сумма равна $120^\circ.$`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8; § 10' },
{ idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-angles-distances', diff: 4,
text: R`Основание $AC$ равнобедренного треугольника $ABC$, у которого $\angle ABC=120^\circ$, лежит в плоскости $\alpha$, образующей с плоскостью треугольника угол $30^\circ$. Найдите квадрат расстояния от вершины $B$ треугольника $ABC$ до плоскости $\alpha$, если площадь треугольника $ABC$ равна $160\sqrt3$.`,
answer: '40',
sol: R`Площадь $S=\dfrac12\cdot AB\cdot BC\cdot\sin120^\circ$, где $AB=BC$. Тогда $160\sqrt3=\dfrac12 AB^{2}\cdot\dfrac{\sqrt3}{2}$, откуда $AB^{2}=640$, $AB=8\sqrt{10}$. Пусть $BK$ — высота треугольника к основанию $AC$; угол $BAK=30^\circ$, поэтому $BK=AB\sin30^\circ=4\sqrt{10}$. Пусть $BM$ — перпендикуляр к плоскости $\alpha$; по теореме о трёх перпендикулярах $\angle BKM=30^\circ$ — линейный угол двугранного. Тогда $BM=BK\sin30^\circ=2\sqrt{10}$ и $BM^{2}=40.$`,
ref: 'Латотин «Геометрия, 10 кл.», разд. 3, § 10' },
{ idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-logarithmic', diff: 4,
text: R`Найдите сумму всех целых решений неравенства $\log_{\frac16}\dfrac{x-7}{x-11}\ge0$ на промежутке $(-11;12)$.`,
answer: '-34',
sol: R`Так как $0=\log_{\frac16}1$, а основание $\dfrac16<1$ (функция убывает), неравенство равносильно системе $\begin{cases}\dfrac{x-7}{x-11}\le1,\\[4pt]\dfrac{x-7}{x-11}>0.\end{cases}$ Первое неравенство сводится к $\dfrac{4}{x-11}\le0$, то есть $x<11$; второе даёт $x<7$ или $x>11$. Решение системы — луч $(-\infty;7)$. Пересечение с $(-11;12)$ — интервал $(-11;7)$; сумма целых чисел из него ($-10,\ldots,6$) равна $-34.$`,
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3, § 10' },
{ idx: 28, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
text: R`Найдите сумму квадратов корней уравнения $x^{2}+3x-\sqrt{x^{2}+3x+9}=3$.`,
answer: '23',
sol: R`Преобразуем к виду $x^{2}+3x+9-\sqrt{x^{2}+3x+9}-12=0$. Пусть $t=\sqrt{x^{2}+3x+9}\ge0$, тогда $t^{2}-t-12=0$, $t=4$ (корень $t=-3$ отброшен). Значит, $x^{2}+3x+9=16$, $x^{2}+3x-7=0$. По теореме Виета $x_1+x_2=-3$, $x_1x_2=-7$, поэтому $x_1^{2}+x_2^{2}=(x_1+x_2)^{2}-2x_1x_2=9+14=23.$`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
{ idx: 29, type: 'open', topic: 'functions', subtopic: 'fn-derivative', diff: 4,
text: R`Найдите сумму всех целых чисел из промежутков возрастания функции $f(x)=\dfrac{33+2x^{2}}{2-x}$.`,
answer: '16',
sol: R`$D(f)=(-\infty;2)\cup(2;+\infty)$. Производная $f'(x)=\dfrac{-2x^{2}+8x+33}{(2-x)^{2}}$. Решая $f'(x)>0$, то есть $-2x^{2}+8x+33>0$, получаем $x\in\left(\dfrac{4-\sqrt{82}}{2};\dfrac{4+\sqrt{82}}{2}\right)$. С учётом $x\ne2$ функция возрастает на $\left[\dfrac{4-\sqrt{82}}{2};2\right)$ и $\left(2;\dfrac{4+\sqrt{82}}{2}\right]$. Целые из этих промежутков: $-2,\,-1,\,0,\,1,\,3,\,4,\,5,\,6$; их сумма равна $16.$`,
ref: 'Арефьева «Алгебра, 10 кл.», гл. 3, § 20' },
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 5,
text: R`Дана правильная шестиугольная пирамида $SABCDEF$, у которой угол между боковым ребром и плоскостью основания равен $\arccos\dfrac49$. Объём пирамиды $SABCDEF$ равен $18\sqrt{65}$. Найдите значение выражения $\dfrac{V}{\sqrt3\cdot\pi}$, где $V$ — объём шара, радиус которого равен длине бокового ребра пирамиды $SABCDEF$.`,
answer: '729',
sol: R`Пусть $O$ — центр основания, $SA=R$ — боковое ребро. Из прямоугольного треугольника $SOA$: $\cos\angle SAO=\dfrac{OA}{SA}=\dfrac49$, поэтому $SA=\dfrac94 OA$. Высота пирамиды $SO=\sqrt{SA^{2}-OA^{2}}=\dfrac{OA\sqrt{65}}{4}$. Для правильного шестиугольника $OA=AB$, а площадь основания $S_0=\dfrac{3\sqrt3}{2}AB^{2}$. Из формулы объёма $18\sqrt{65}=\dfrac13\cdot\dfrac{3\sqrt3}{2}AB^{2}\cdot\dfrac{AB\sqrt{65}}{4}$ получаем $AB^{3}=48\sqrt3$. Радиус шара $R=SA=\dfrac94\sqrt[3]{48\sqrt3}$, его объём $V=\dfrac43\pi R^{3}=\dfrac43\pi\cdot\dfrac{9^{3}}{4^{3}}\cdot48\sqrt3=729\sqrt3\,\pi$. Тогда $\dfrac{V}{\sqrt3\cdot\pi}=729.$`,
ref: 'Латотин «Геометрия, 11 кл.», разд. 2, § 3; разд. 3, § 6' },
];
/* ── Сборка solution_html ────────────────────────────────────────────────── */
function ansShowOf(t) {
if (t.ansShow != null) return t.ansShow;
if (t.type === 'mc') return `${t.answer})`;
return `$${t.answer}$`;
}
function buildSolution(t) {
const ans = ansShowOf(t);
let html = `${t.sol}<div class="sol-ans">Ответ: ${ans}</div>`;
if (t.ref) html += `<div class="sol-ref" style="margin-top:6px;font-size:.85em;opacity:.7">Учебник: ${t.ref}</div>`;
return html;
}
/* ── Самопроверка (повтор логики checkAnswerServer из exam-prep.js) ────────── */
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(userInput, canonical) {
if (userInput == null || canonical == null) return false;
const c = String(canonical).trim();
if (/^[а-д]$/.test(c)) return String(userInput).trim().toLowerCase() === c.toLowerCase();
if (/^[^;]+;[^;]+$/.test(c)) return false;
const cn = srvToNumber(c), un = srvToNumber(userInput);
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(`Дубль task_idx=${t.idx}`); seen.add(t.idx);
if (t.idx < 1 || t.idx > 30) problems.push(`task_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}: answer "${t.answer}" не проходит self-check (Unicode-минус? пробел?)`);
if (//.test(String(t.answer))) problems.push(`#${t.idx}: Unicode-минус в answer`);
}
/* ── Экспорт для тестов/тиража (без запуска main при require) ──────────────── */
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);
const track = db.prepare(`SELECT exam_key, variants_count FROM exam_tracks WHERE exam_key=?`).get(EXAM);
if (!track) { console.error(`✗ Трек '${EXAM}' не найден в exam_tracks. Прерывание.`); process.exit(1); }
/* ── DRY-RUN сводка ────────────────────────────────────────────────────────── */
console.log(`\n=== seed_ctmath_rt2324_e2v1 (${PROV}) variant=${VARIANT} ===`);
console.log(`Режим: ${APPLY ? 'APPLY (запись)' : 'DRY-RUN (только проверка)'}\n`);
const byType = TASKS.reduce((a, t) => (a[t.type] = (a[t.type] || 0) + 1, a), {});
console.log('Типы:', JSON.stringify(byType), '\n');
console.log('idx | type | subtopic | d | answer');
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)}`);
}
if (problems.length) {
console.error(`\n✗ ПРОБЛЕМЫ (${problems.length}):`);
problems.forEach(p => console.error(' - ' + p));
console.error('\nЗапись отменена из-за ошибок валидации.');
db.close();
process.exit(1);
}
console.log('\n✓ Валидация и self-check ответов пройдены (30/30).');
/* ── APPLY: upsert ─────────────────────────────────────────────────────────── */
if (!APPLY) {
console.log('\nDRY-RUN: ничего не записано. Для записи: node backend/scripts/seed_ctmath_rt2324_e2v1.js --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=? AND variant BETWEEN 101 AND 1999`).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}).`);
console.log(`✓ exam_tracks.variants_count = ${distinct} (различных вариантов).`);
console.log(`\nПробник доступен: /exam-prep/ctmath → «Варианты» → «РТ-2023/24 · этап II».\n`);
} catch (e) {
db.exec('ROLLBACK');
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
process.exitCode = 1;
}
db.close();