5 олимпиадных задач в MathCAD
...точней, задачи не привязаны именно к MathCAD, они алгоритмические, но многие вещи, такие как сортировка, обратное упорядочение вектора или извлечение подматрицы (строки, столбца, подвектора) в MathCAD как раз очень удобно и естественно делать.
Везде предполагается, что системная переменная ORIGIN
(начало индексации строк и столбцов матриц/векторов) установлена в 1:
ORIGIN:=1
а индексация символов строк выполняется с нуля (по умолчанию).
1. Поворот квадратной матрицы на 90, 180 или 270 градусов. Подобная задача есть тут. В MathCAD "ручной" пересчёт индексов не нужен - ведь есть оператор извлечения столбца (а в версиях Prime - и строки). Достаточно написать функцию поворота матрицы на 90 градусов по часовой стрелке и вызвать её нужное число раз:
Поворот квадратной матрицы в MathCAD
2. В массиве D отсортировать в обратном порядке элементы с индексами от L до K включительно. Проверка допустимости индексов не производится, а вот то, что индекс может совпадать с номером первого или последнего элемента - учитывается.
Обратная сортировка части массива в MathCAD
3. Из элементов заданного целочисленного вектора X сформировать вектор Y, в котором элементы отсортированы в порядке невозрастания количества одинаковых элементов.
Сортировка в порядке невозрастания количества одинаковых элементов (MathCAD)
Сначала по входному массиву X
формируется матрица C
, состоящая из 2 столбцов. В первом столбце хранятся уникальные значения элементов или знак "бесконечность", если элемент встречается в массиве неоднократно, во втором - число повторений уникального элемента. Затем матрица C
"сжимается" исключением строк, в которых есть "бесконечность", затем полученная после сжатия 2-столбцовая матрица D
сортируется по возрастанию элементов второго столбца (частота повторения), потом, в соответствии с частотами, формируется вектор Y
, являющийся ответом. При "ручной" алгоритмизации этот алгоритм был бы сильно избыточным, для MathCAD - сойдёт.
4. Представить заданное четное число N
(N>2
) в виде суммы 2 простых чисел (проверка гипотезы Гольдбаха). Реализация на C++ есть здесь. В MathCAD особых отличий не будет - функция Simple
проверяет, простое ли число, а Goldbah
для заданного чётного натурального n
ищет пару простых чисел (i, n-i)
.
Проверка гипотезы Гольдбаха в MathCAD
5. Вывести только те цифры заданных натуральных чисел A
и B
, которые встречаются в каждом из чисел. Например, при A=73
, B=3871
ответ = (3 7)
, при A=99
и B=77
ответ=(пусто)
Поскольку в MathCAD есть обычные методы работы со строками и преобразования типов данных "строка" - "число", задача довольно тривиальна.
Цифры, которые встречаются в каждом из двух натуральных чисел, решение в MathCAD
Скачать эти примеры в архиве .zip с файлом формата .xmcd (MathCAD 15) (51 Кб)
17.05.2014, 17:42 [13781 просмотр]