5881787492
Пробник ЦТ по математике 2019, Вариант 1 (А1–А18 + В1–В12; В1 на соответствие, В2 множ.выбор) для трека exam-prep ctmath. Источник: чистый PDF ЦТ 2019.pdf. Все 30 решены и сверены: столбец Вариант 1 в таблице (стр.45) затемнён, но читаемые ячейки совпали; методы B5/B6/B7/B11/B12 перекрёстно подтверждены на Варианте 10 (его задания на стр.43-44, ответы читаемы → 81/56/-1071/ 624/540 ровно по таблице). Тяжёлые: B7=-264 (период+нечётность), B11=288, B12=110 (т.Гульдина). Фигурные A1/A7/A9 разрешены по столбцу 1 (D/2√34/2,4); B1/B2 — данные текстом. VARIANT_LABEL 115 -> 'ЦТ-2019'. DRY-RUN 30/30, self-check и структурный KaTeX — зелёные. Запись в БД — пользователь: node backend/scripts/seed_ctmath_ct2019_v1.js --apply Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
381 lines
35 KiB
JavaScript
381 lines
35 KiB
JavaScript
'use strict';
|
||
/* ───────────────────────────────────────────────────────────────────────────
|
||
seed_ctmath_ct2019_v1.js
|
||
Чистый вариант-пробник для трека exam-prep `ctmath`.
|
||
|
||
Источник: Централизованное тестирование (ЦТ) по математике, 2019, Вариант 1.
|
||
Формат: Часть А = А1–А18 (закрытые), Часть В = В1–В12 (открытые; В1 — на соответствие,
|
||
В2 — множественный выбор). Всего 30 заданий. Перенабрано вручную в KaTeX по PDF:
|
||
F:\!Рабочие\ЦТ\Математика\Математика\ЦТ-ЦЭ\ЦТ 2019.pdf (10 вариантов, табл. ответов стр.45).
|
||
|
||
⚠️ Ответы решены самостоятельно и СВЕРЕНЫ: (1) с (затемнённым) столбцом «Вариант 1»
|
||
таблицы — читаемые ячейки совпали; (2) методы B5/B6/B7/B11/B12 перекрёстно проверены на
|
||
Варианте 10 (его задания напечатаны на стр.43–44, ответы читаемы): дали ровно табличные
|
||
81/56/-1071/624/540 → метод верен. variant=115 (после ЦТ-2018 = 114).
|
||
|
||
Реконструкции/адаптации заданий-«с-картинкой» (смысл/ответ сохранены, авто-проверка):
|
||
• А1 (число $\tfrac{7\pi}{6}$ на прямой) → промежутки точек заданы явно (ответ $D$);
|
||
• А7 (узел сетки) → координаты точки $A(5;-3)$ заданы ($AB=2\sqrt{34}$);
|
||
• А9 (графики движения) → скорости катера/лодки относительно берега даны числами
|
||
($12$ и $7{,}2$ км/ч → течение $2{,}4$);
|
||
• В1/В2 — данные предложений/утверждений приведены текстом (как в оригинале).
|
||
|
||
Идемпотентность: upsert по UNIQUE(exam_key, variant, task_idx).
|
||
Запуск:
|
||
node backend/scripts/seed_ctmath_ct2019_v1.js # DRY-RUN (по умолчанию)
|
||
node backend/scripts/seed_ctmath_ct2019_v1.js --apply # запись в БД
|
||
|
||
⚠️ Массовую запись в БД запускает ПОЛЬЗОВАТЕЛЬ вручную. Без --apply ничего не пишется.
|
||
─────────────────────────────────────────────────────────────────────────── */
|
||
|
||
const { DatabaseSync } = require('node:sqlite');
|
||
const path = require('path');
|
||
|
||
const APPLY = process.argv.includes('--apply');
|
||
const EXAM = 'ctmath';
|
||
const VARIANT = 115;
|
||
const PROV = 'ЦТ–2019, Вариант 1';
|
||
const R = String.raw;
|
||
|
||
const L = ['а', 'б', 'в', 'г', 'д'];
|
||
const mc = (...html) => html.map((h, i) => [L[i], h]);
|
||
|
||
/* ── 30 заданий ─────────────────────────────────────────────────────────── */
|
||
const TASKS = [
|
||
// ── Часть A: А1–А18 ──────────────────────────────────────────────────────
|
||
{ idx: 1, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 1,
|
||
text: R`На координатной прямой отмечены точки (слева направо) $F,A,B,D,C$, лежащие в единичных промежутках: $F\in(0;1)$, $A\in(1;2)$, $B\in(2;3)$, $D\in(3;4)$, $C\in(4;5)$. Числу $\dfrac{7\pi}{6}$ на координатной прямой может соответствовать точка:`,
|
||
opts: mc('$F$', '$A$', '$B$', '$C$', '$D$'),
|
||
answer: 'д',
|
||
sol: R`$\dfrac{7\pi}{6}\approx3{,}67$ лежит в промежутке $(3;4)$, которому соответствует точка $D$.`,
|
||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1' },
|
||
|
||
{ idx: 2, type: 'mc', topic: 'equations', subtopic: 'eq-rational', diff: 2,
|
||
text: R`Укажите номер системы неравенств, равносильной системе $\begin{cases}x>3,\\ x\le5.\end{cases}$<br>$1)\ \begin{cases}x-2>1,\\ x+1\le6;\end{cases}$ $\ 2)\ \begin{cases}2x>3,\\ x\le5;\end{cases}$ $\ 3)\ \begin{cases}x>3,\\ x+2\le3;\end{cases}$ $\ 4)\ \begin{cases}x+1>2,\\ x\le5;\end{cases}$ $\ 5)\ \begin{cases}x>3,\\ -x\le5.\end{cases}$`,
|
||
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
|
||
answer: 'а',
|
||
sol: R`В системе 1: $x-2>1\Rightarrow x>3$ и $x+1\le6\Rightarrow x\le5$ — это и есть данная система.`,
|
||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 3' },
|
||
|
||
{ idx: 3, type: 'mc', topic: 'numbers', subtopic: 'num-real', diff: 2,
|
||
text: R`Укажите номер верного утверждения.<br>$1)\ 11^{16}=121^{4}$; $\ 2)\ -\dfrac37>-\dfrac47$; $\ 3)\ \sqrt{79}>9$; $\ 4)\ 0{,}72<0{,}702$; $\ 5)\ 6^{1/5}=6^{-5}$.`,
|
||
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
|
||
answer: 'б',
|
||
sol: R`$-\dfrac37>-\dfrac47$ — верно (утверждение 2). Остальные неверны: $121^{4}=11^{8}\ne11^{16}$; $\sqrt{79}<9$; $0{,}72>0{,}702$; $6^{1/5}\ne6^{-5}$.`,
|
||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 1' },
|
||
|
||
{ idx: 4, type: 'mc', topic: 'trigonometry', subtopic: 'trig-circle', diff: 1,
|
||
text: R`Найдите градусную меру угла, смежного с углом, радианная мера которого равна $\dfrac{11\pi}{15}$.`,
|
||
opts: mc('$46^\circ$', '$42^\circ$', '$50^\circ$', '$45^\circ$', '$48^\circ$'),
|
||
answer: 'д',
|
||
sol: R`$\dfrac{11\pi}{15}=\dfrac{11\cdot180^\circ}{15}=132^\circ$. Смежный угол равен $180^\circ-132^\circ=48^\circ$.`,
|
||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1' },
|
||
|
||
{ idx: 5, type: 'mc', topic: 'expressions', subtopic: 'expr-polynomials', diff: 2,
|
||
text: R`Результат разложения многочлена $cx+cy-(x+y)^{2}$ на множители имеет вид:`,
|
||
opts: mc('$(x+y)(2c-x+y)$', '$(x+y)(c-x+y)$', '$(x+y)(c-x-y)$', '$(x+y)(c-2)$', '$(x+y)(c-1)$'),
|
||
answer: 'в',
|
||
sol: R`$cx+cy-(x+y)^{2}=c(x+y)-(x+y)^{2}=(x+y)\bigl(c-(x+y)\bigr)=(x+y)(c-x-y)$.`,
|
||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 2' },
|
||
|
||
{ idx: 6, type: 'mc', topic: 'functions', subtopic: 'fn-graphs', diff: 2,
|
||
text: R`Окружность задана уравнением $(x-3)^{2}+(y+4)^{2}=14$. Укажите номер верного утверждения.<br>$1)$ точка $A(-4;3)$ лежит на окружности;<br>$2)$ центром окружности является точка $O(-3;4)$;<br>$3)$ диаметр окружности равен $14$;<br>$4)$ прямая $y=2x-10$ проходит через центр окружности;<br>$5)$ радиус окружности равен $7$.`,
|
||
opts: mc('$1$', '$2$', '$3$', '$4$', '$5$'),
|
||
answer: 'г',
|
||
sol: R`Центр окружности $(3;-4)$. Подстановка в $y=2x-10$: $2\cdot3-10=-4$ — прямая проходит через центр (утверждение 4). Остальные неверны: $A$ не на окружности; центр $(3;-4)$; диаметр $2\sqrt{14}$; радиус $\sqrt{14}$.`,
|
||
ref: 'Латотин «Геометрия, 8 кл.», разд. 5' },
|
||
|
||
{ idx: 7, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
|
||
text: R`Точка $A(5;-3)$ — узел координатной сетки. Точка $B$ симметрична точке $A$ относительно начала координат. Найдите длину отрезка $AB$.`,
|
||
opts: mc('$2\sqrt{34}$', '$10$', '$2\sqrt{14}$', '$4\sqrt7$', '$6$'),
|
||
answer: 'а',
|
||
sol: R`$B(-5;3)$, поэтому $AB=\sqrt{(5+5)^{2}+(-3-3)^{2}}=\sqrt{100+36}=\sqrt{136}=2\sqrt{34}$.`,
|
||
ref: 'Латотин «Математика, 6 кл.», гл. 7' },
|
||
|
||
{ idx: 8, type: 'mc', topic: 'planimetry', subtopic: 'plan-circle', diff: 2,
|
||
text: R`Через точку $A$ к окружности с центром $O$ проведены две касательные $AB$ и $AC$ ($B,C$ — точки касания). Найдите градусную меру угла $BAC$, если $\angle OBC=33^\circ$.`,
|
||
opts: mc('$24^\circ$', '$66^\circ$', '$60^\circ$', '$57^\circ$', '$73^\circ$'),
|
||
answer: 'б',
|
||
sol: R`Радиус $OB\perp AB$, поэтому $\angle ABC=90^\circ-\angle OBC=57^\circ$. Так как $AB=AC$ (касательные из одной точки), то $\angle ACB=57^\circ$ и $\angle BAC=180^\circ-2\cdot57^\circ=66^\circ$.`,
|
||
ref: 'Казаков «Геометрия, 9 кл.», гл. 1' },
|
||
|
||
{ idx: 9, type: 'mc', topic: 'word-sequences', subtopic: 'word-problems', diff: 2,
|
||
text: R`Катер плывёт по течению реки, а моторная лодка — против течения; их собственные скорости равны. По графикам движения скорость катера относительно берега равна $12$ км/ч, а лодки — $7{,}2$ км/ч. Найдите скорость течения реки.`,
|
||
opts: mc('$2{,}6$ км/ч', '$5{,}2$ км/ч', '$2{,}4$ км/ч', '$4{,}6$ км/ч', '$4{,}8$ км/ч'),
|
||
answer: 'в',
|
||
sol: R`Скорость катера $u+v=12$, лодки $u-v=7{,}2$. Вычитая, $2v=4{,}8$, $v=2{,}4$ км/ч.`,
|
||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3' },
|
||
|
||
{ idx: 10, type: 'mc', topic: 'equations', subtopic: 'eq-quadratic', diff: 2,
|
||
text: R`Пусть $x_1$ и $x_2$ — корни уравнения $x^{2}-3x+q=0$. Найдите число $q$, при котором выполняется равенство $x_1^{2}+x_2^{2}=25$.`,
|
||
opts: mc('$-8$', '$-3$', '$8$', '$3$', '$-5$'),
|
||
answer: 'а',
|
||
sol: R`По теореме Виета $x_1+x_2=3$, $x_1x_2=q$. Тогда $x_1^{2}+x_2^{2}=(x_1+x_2)^{2}-2x_1x_2=9-2q=25$, откуда $q=-8$.`,
|
||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2' },
|
||
|
||
{ idx: 11, type: 'mc', topic: 'word-sequences', subtopic: 'seq-progressions', diff: 2,
|
||
text: R`Сумма первых четырёх членов геометрической прогрессии равна $60$, знаменатель прогрессии равен $2$. Найдите второй член прогрессии.`,
|
||
opts: mc('$5$', '$16$', '$6$', '$4$', '$8$'),
|
||
answer: 'д',
|
||
sol: R`$S_4=b_1\cdot\dfrac{2^{4}-1}{2-1}=15b_1=60$, откуда $b_1=4$. Второй член $b_2=b_1\cdot2=8$.`,
|
||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 4' },
|
||
|
||
{ idx: 12, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 2,
|
||
text: R`В треугольнике $ABC$ $\angle ACB=90^\circ$, $AB=8$, $\operatorname{ctg}\angle BAC=\sqrt{15}$. Найдите длину стороны $CB$.`,
|
||
opts: mc('$2$', '$3$', '$2\sqrt{15}$', '$8\sqrt{15}$', '$\dfrac{8\sqrt{15}}{15}$'),
|
||
answer: 'а',
|
||
sol: R`$\operatorname{ctg}\angle BAC=\dfrac{AC}{CB}=\sqrt{15}$, поэтому $AC=\sqrt{15}\,CB$. Из $AC^{2}+CB^{2}=AB^{2}$: $15CB^{2}+CB^{2}=64$, $CB^{2}=4$, $CB=2$.`,
|
||
ref: 'Казаков «Геометрия, 8 кл.», гл. 2' },
|
||
|
||
{ idx: 13, type: 'mc', topic: 'equations', subtopic: 'eq-quadratic', diff: 2,
|
||
text: R`Укажите номера уравнений, которые не имеют действительных корней.<br>$1)\ x^{2}=49$; $\ 2)\ \dfrac{1}{x^{2}-49}=0$; $\ 3)\ x^{2}+49=0$; $\ 4)\ x^{2}+49x=0$; $\ 5)\ x^{2}+x-49=0$.`,
|
||
opts: mc('$1$ и $2$', '$2$ и $3$', '$1$ и $5$', '$3$ и $4$', '$4$ и $5$'),
|
||
answer: 'б',
|
||
sol: R`Уравнение $\dfrac{1}{x^{2}-49}=0$ не имеет решений, а $x^{2}+49=0$ не имеет действительных корней. Остальные корни имеют. Значит уравнения $2$ и $3$.`,
|
||
ref: 'Арефьева «Алгебра, 8 кл.», гл. 2' },
|
||
|
||
{ idx: 14, type: 'mc', topic: 'planimetry', subtopic: 'plan-triangles', diff: 3,
|
||
text: R`В ботаническом саду разбили клумбу треугольной формы. Длина первой стороны равна $4$ м, длина второй в $2{,}5$ раза больше длины первой, а длина третьей составляет не менее 120 % длины второй. Какому условию должен удовлетворять периметр $P$ (в метрах) этой клумбы?`,
|
||
opts: mc('$26<P\le28$', '$P\le28$', '$26\le P<28$', '$P>26$', '$26\le P\le28$'),
|
||
answer: 'в',
|
||
sol: R`Первая сторона $4$ м, вторая $10$ м, третья $c\ge12$ м. По неравенству треугольника $c<4+10=14$. Значит $12\le c<14$, и $P=14+c$, то есть $26\le P<28$.`,
|
||
ref: 'Казаков «Геометрия, 7 кл.», гл. 3' },
|
||
|
||
{ idx: 15, type: 'mc', topic: 'numbers', subtopic: 'num-divisibility', diff: 2,
|
||
text: R`Найдите сумму всех натуральных чисел $n$, для которых выполняется равенство НОК$(n;63)=63$.`,
|
||
opts: mc('$103$', '$105$', '$64$', '$104$', '$126$'),
|
||
answer: 'г',
|
||
sol: R`НОК$(n;63)=63$ означает, что $n$ — делитель числа $63$. Делители: $1,3,7,9,21,63$; их сумма $104$.`,
|
||
ref: 'Герасимов «Математика, 6 кл.», гл. 1' },
|
||
|
||
{ idx: 16, type: 'mc', topic: 'stereometry', subtopic: 'ster-rotation', diff: 2,
|
||
text: R`Секущая плоскость пересекает сферу по окружности, радиус которой равен $2$. Если расстояние от центра сферы до секущей плоскости равно $4$, то площадь сферы равна:`,
|
||
opts: mc('$40\pi$', '$20\pi$', '$160\pi$', '$85\pi$', '$80\pi$'),
|
||
answer: 'д',
|
||
sol: R`$R^{2}=r^{2}+d^{2}=2^{2}+4^{2}=20$. Площадь сферы $4\pi R^{2}=80\pi$.`,
|
||
ref: 'Латотин «Геометрия, 11 кл.», разд. 3' },
|
||
|
||
{ idx: 17, type: 'mc', topic: 'trigonometry', subtopic: 'trig-equations', diff: 3,
|
||
text: R`Сумма наибольшего отрицательного и наименьшего положительного корней уравнения $\cos(3\pi x)\cdot\cos\left(3\pi x+\dfrac{\pi}{2}\right)=\dfrac12$ равна:`,
|
||
opts: mc('$\dfrac{1}{2}$', '$\dfrac{7}{12}$', '$\dfrac{1}{6}$', '$-\dfrac{1}{12}$', '$\dfrac14$'),
|
||
answer: 'в',
|
||
sol: R`$\cos\left(3\pi x+\dfrac{\pi}{2}\right)=-\sin(3\pi x)$, поэтому $-\sin(3\pi x)\cos(3\pi x)=\dfrac12$, то есть $\sin(6\pi x)=-1$, $x=-\dfrac{1}{12}+\dfrac{k}{3}$. Наибольший отрицательный корень $-\dfrac{1}{12}$, наименьший положительный $\dfrac14$; их сумма $\dfrac14-\dfrac{1}{12}=\dfrac16$.`,
|
||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 1, § 8' },
|
||
|
||
{ idx: 18, type: 'mc', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 4,
|
||
text: R`$ABCA_1B_1C_1$ — правильная треугольная призма, все рёбра которой равны $24\sqrt3$. Точки $P$ и $K$ — середины рёбер $A_1B_1$ и $AA_1$, точка $M$ на ребре $B_1C_1$ такова, что $C_1M:C_1B_1=1:3$. Найдите длину отрезка, по которому плоскость, проходящая через $M,P,K$, пересекает грань $BB_1C_1C$.`,
|
||
opts: mc('$8\sqrt3$', '$20\sqrt3$', '$18\sqrt3$', '$10\sqrt3$', '$12\sqrt3$'),
|
||
answer: 'г',
|
||
sol: R`Введём координаты с основанием — равносторонним треугольником со стороной $24\sqrt3$ и высотой призмы $24\sqrt3$. Секущая плоскость через $M,P,K$ пересекает грань $BB_1C_1C$ по отрезку от $M$ до точки на ребре $CC_1$; его длина $\sqrt{(4\sqrt3)^{2}+12^{2}+(6\sqrt3)^{2}}=\sqrt{48+144+108}=\sqrt{300}=10\sqrt3$.`,
|
||
ref: 'Латотин «Геометрия, 10 кл.», разд. 4' },
|
||
|
||
// ── Часть B: В1–В12 ──────────────────────────────────────────────────────
|
||
{ idx: 19, type: 'long', topic: 'expressions', subtopic: 'expr-powers-roots', diff: 3,
|
||
text: R`Для начала каждого из предложений А–В подберите его окончание $1$–$5$ так, чтобы получилось верное утверждение.<br>А) Значение выражения $2^{-8}:2^{0}$ равно …<br>Б) Значение выражения $(-2)^{-11}\cdot8$ равно …<br>В) Значение выражения $20^{4}:(-5)^{4}$ равно …<br>Окончания: $1)\;256$; $\ 2)\;-256$; $\ 3)\;-\dfrac{1}{256}$; $\ 4)\;\dfrac{1}{256}$; $\ 5)\;32$.`,
|
||
answer: 'А4Б3В1',
|
||
ansShow: 'А4Б3В1',
|
||
sol: R`А) $2^{-8}:2^{0}=2^{-8}=\dfrac{1}{256}$ (окончание 4). Б) $(-2)^{-11}\cdot8=-\dfrac{1}{2048}\cdot8=-\dfrac{1}{256}$ (окончание 3). В) $20^{4}:(-5)^{4}=\left(\dfrac{20}{5}\right)^{4}=4^{4}=256$ (окончание 1). Ответ: А4Б3В1.`,
|
||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 1' },
|
||
|
||
{ idx: 20, type: 'open', topic: 'stereometry', subtopic: 'ster-basics', diff: 3,
|
||
text: R`Прямая $a$ перпендикулярна плоскости $\alpha$ и пересекает её в точке $O$. Выберите номера трёх верных утверждений (запишите цифрами в порядке возрастания).<br>$1)$ любая прямая, перпендикулярная плоскости $\alpha$, параллельна прямой $a$;<br>$2)$ любая прямая, перпендикулярная прямой $a$, лежит в плоскости $\alpha$;<br>$3)$ прямая $a$ перпендикулярна любой прямой плоскости $\alpha$;<br>$4)$ через прямую $a$ проходит единственная плоскость, перпендикулярная плоскости $\alpha$;<br>$5)$ существует множество плоскостей, перпендикулярных прямой $a$;<br>$6)$ существует единственная прямая, параллельная прямой $a$ и перпендикулярная плоскости $\alpha$.`,
|
||
answer: '135',
|
||
sol: R`Верны утверждения $1$ (все прямые, перпендикулярные $\alpha$, параллельны между собой), $3$ ($a\perp\alpha$ означает перпендикулярность любой прямой плоскости) и $5$ (плоскостей, перпендикулярных $a$, бесконечно много). Утверждения $2,4,6$ неверны.`,
|
||
ref: 'Латотин «Геометрия, 10 кл.», разд. 2' },
|
||
|
||
{ idx: 21, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 3,
|
||
text: R`В двух сосудах содержится $57$ л жидкости. Если 5 % жидкости из первого сосуда перелить во второй, то в обоих сосудах окажется одинаковое количество жидкости. Сколько литров жидкости было во втором сосуде первоначально?`,
|
||
answer: '27',
|
||
sol: R`Пусть в первом сосуде $a$ л, во втором $b$ л, $a+b=57$. После переливания: $0{,}95a=b+0{,}05a$, то есть $0{,}9a=b$. Тогда $a+0{,}9a=57$, $a=30$, $b=27$.`,
|
||
ref: 'Арефьева «Алгебра, 7 кл.», гл. 3' },
|
||
|
||
{ idx: 22, type: 'open', topic: 'equations', subtopic: 'eq-irrational', diff: 3,
|
||
text: R`Найдите сумму корней (корень, если он единственный) уравнения $\sqrt{x^{2}-9x+8}-\sqrt{23-11x}=0$.`,
|
||
answer: '-5',
|
||
sol: R`$\sqrt{x^{2}-9x+8}=\sqrt{23-11x}$, поэтому $x^{2}-9x+8=23-11x$, $x^{2}+2x-15=0$, $x=3$ или $x=-5$. ОДЗ ($x\le\dfrac{23}{11}$ и $x^{2}-9x+8\ge0$) удовлетворяет лишь $x=-5$.`,
|
||
ref: 'Арефьева «Алгебра, 10 кл.», гл. 2, § 17' },
|
||
|
||
{ idx: 23, type: 'open', topic: 'planimetry', subtopic: 'plan-quadrilaterals', diff: 4,
|
||
text: R`В трапеции $ABCD$ с основаниями $AD>BC$ точка пересечения её диагоналей делит диагональ $AC$ на отрезки длиной $6$ и $4$. Найдите площадь трапеции $ABCD$, если площадь треугольника $ABC$ равна $20$.`,
|
||
answer: '50',
|
||
sol: R`Из подобия $\dfrac{AD}{BC}=\dfrac{AO}{OC}=\dfrac64=\dfrac32$. Площадь $ABC=\dfrac12\,BC\cdot h=20$ ($h$ — высота трапеции), значит $BC\cdot h=40$. Площадь трапеции $\dfrac12(AD+BC)h=\dfrac12\left(\dfrac32 BC+BC\right)h=\dfrac54\,BC\cdot h=\dfrac54\cdot40=50$.`,
|
||
ref: 'Казаков «Геометрия, 8 кл.», гл. 4' },
|
||
|
||
{ idx: 24, type: 'open', topic: 'equations', subtopic: 'eq-rational', diff: 4,
|
||
text: R`Найдите произведение наибольшего целого решения на количество всех целых решений неравенства $\dfrac{x^{2}-x-20}{(x^{2}+4x)^{2}}\le0$.`,
|
||
answer: '40',
|
||
sol: R`После сокращения $\dfrac{(x-5)(x+4)}{x^{2}(x+4)^{2}}=\dfrac{x-5}{x^{2}(x+4)}\le0$. Так как $x^{2}>0$, знак определяет $\dfrac{x-5}{x+4}\le0$, то есть $-4<x\le5$, $x\ne0$. Целые решения $-3,-2,-1,1,2,3,4,5$ (всего $8$); наибольшее $5$. Произведение $5\cdot8=40$.`,
|
||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 3' },
|
||
|
||
{ idx: 25, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 5,
|
||
text: R`Функция $y=f(x)$ определена на $\mathbb{R}$, нечётна, периодична с периодом $T=10$ и при $x\in[0;5]$ задаётся формулой $f(x)=3x^{2}-15x$. Найдите произведение абсцисс точек пересечения прямой $y=12$ и графика функции на промежутке $[-13;7]$.`,
|
||
answer: '-264',
|
||
sol: R`На $[0;5]$ значения $f$ не больше $0$, а на $[-5;0]$ (по нечётности $f(x)=-3x^{2}-15x$) уравнение $f(x)=12$ даёт $x=-1$ и $x=-4$. С учётом периода $10$ на $[-13;7]$ корни: $-11,-4,-1,6$. Произведение $(-11)(-4)(-1)\cdot6=-264$.`,
|
||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 2' },
|
||
|
||
{ idx: 26, type: 'open', topic: 'stereometry', subtopic: 'ster-polyhedra', diff: 4,
|
||
text: R`В основании пирамиды лежит прямоугольный треугольник, длина гипотенузы которого равна $6$, острый угол равен $30^\circ$. Каждая боковая грань пирамиды наклонена к плоскости основания под углом $\arccos\dfrac{\sqrt3}{10}$. Найдите площадь боковой поверхности пирамиды.`,
|
||
answer: '45',
|
||
sol: R`Катеты основания равны $3$ и $3\sqrt3$, площадь основания $S=\dfrac12\cdot3\cdot3\sqrt3=\dfrac{9\sqrt3}{2}$. При равном наклоне всех боковых граней площадь боковой поверхности равна $\dfrac{S}{\cos\varphi}=\dfrac{9\sqrt3/2}{\sqrt3/10}=45$.`,
|
||
ref: 'Латотин «Геометрия, 11 кл.», разд. 1' },
|
||
|
||
{ idx: 27, type: 'open', topic: 'equations', subtopic: 'eq-exponential', diff: 4,
|
||
text: R`Найдите увеличенную в $3$ раза сумму квадратов корней уравнения $\sqrt[5]{5^{\,2x^{2}+3x-5}}-\left(\sqrt{6-2\sqrt5}+1\right)^{2x}=0$.`,
|
||
answer: '18',
|
||
sol: R`$\sqrt{6-2\sqrt5}=\sqrt{(\sqrt5-1)^{2}}=\sqrt5-1$, поэтому $\left(\sqrt5-1+1\right)^{2x}=5^{x}$. Уравнение принимает вид $5^{(2x^{2}+3x-5)/5}=5^{x}$, то есть $2x^{2}-2x-5=0$. Сумма квадратов корней $(x_1+x_2)^{2}-2x_1x_2=1+5=6$; увеличенная в $3$ раза — $18$.`,
|
||
ref: 'Арефьева «Алгебра, 11 кл.», гл. 2' },
|
||
|
||
{ idx: 28, type: 'open', topic: 'functions', subtopic: 'fn-properties', diff: 4,
|
||
text: R`Найдите сумму всех целых чисел из области определения функции $y=\dfrac{\sqrt[4]{56+9x-2x^{2}}}{\log_{\sqrt7}(x-3)}$.`,
|
||
answer: '26',
|
||
sol: R`Под корнем $56+9x-2x^{2}\ge0$: $-3{,}5\le x\le8$. Знаменатель: $x-3>0$ и $\log_{\sqrt7}(x-3)\ne0$, то есть $x>3$, $x\ne4$. Итого $x\in(3;8]$, $x\ne4$. Целые $5,6,7,8$; их сумма $26$.`,
|
||
ref: 'Арефьева «Алгебра, 11 кл.», гл. 3' },
|
||
|
||
{ idx: 29, type: 'open', topic: 'word-sequences', subtopic: 'word-problems', diff: 5,
|
||
text: R`Двое рабочих различной квалификации выполнили работу. Первый проработал $3$ ч, прежде чем к нему присоединился второй. Если бы сначала второй работал $3$ ч, а затем к нему присоединился первый, то работа была бы закончена на $36$ мин позже. Первый рабочий шестую часть работы выполняет на $2$ ч быстрее, чем второй выполняет третью часть. Сколько минут заняло выполнение всей работы?`,
|
||
answer: '288',
|
||
sol: R`Пусть производительности $r_1,r_2$. Разность сценариев $\dfrac{3(r_1-r_2)}{r_1+r_2}=0{,}6$ даёт $r_1=1{,}5r_2$; условие $\dfrac{1/3}{r_2}-\dfrac{1/6}{r_1}=2$ даёт $r_2=\dfrac19$, $r_1=\dfrac16$. Тогда первый за $3$ ч выполнит половину, остальное вместе за $\dfrac{1/2}{5/18}=1{,}8$ ч; всего $4{,}8$ ч $=288$ мин.`,
|
||
ref: 'Арефьева «Алгебра, 9 кл.», гл. 1' },
|
||
|
||
{ idx: 30, type: 'open', topic: 'stereometry', subtopic: 'ster-rotation', diff: 5,
|
||
text: R`Прямоугольный треугольник, длина гипотенузы которого равна $10$, а высота, проведённая к ней, равна $3$, вращается вокруг прямой, перпендикулярной гипотенузе и проходящей в плоскости треугольника через вершину большего острого угла. Найдите объём $V$ тела вращения и в ответ запишите значение выражения $\dfrac{V}{\pi}$.`,
|
||
answer: '110',
|
||
sol: R`Высота делит гипотенузу на отрезки $1$ и $9$ ($AD\cdot DB=3^{2}$). Больший острый угол — у вершины при меньшем отрезке. В координатах $A(0;0)$, $C(1;3)$, $B(10;0)$; ось вращения — прямая $x=0$ через $A$. По теореме Гульдина $V=2\pi\,x_{c}\,S$, где $x_{c}=\dfrac{0+1+10}{3}=\dfrac{11}{3}$, $S=15$. Тогда $V=2\pi\cdot\dfrac{11}{3}\cdot15=110\pi$, и $\dfrac{V}{\pi}=110$.`,
|
||
ref: 'Латотин «Геометрия, 11 кл.», разд. 2' },
|
||
];
|
||
|
||
/* ── Сборка 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_ct2019_v1 (${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_ct2019_v1.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 → «Варианты» → «ЦТ-2019».\n`);
|
||
} catch (e) {
|
||
db.exec('ROLLBACK');
|
||
console.error('\n✗ Ошибка записи, откат транзакции:', e.message);
|
||
process.exitCode = 1;
|
||
}
|
||
db.close();
|