25 ! "сообщение" по теме динамика на языке python
в сообщении, состоящем из одних букв и пробелов, каждую букву заменили её порядковым номером в алфавите (а - 1, б - 2, я - 33), а пробел - нулем. требуется по заданной последовательности цифр найти количество исходных сообщений, из которых она могла получиться.
входные данные
в первой строке содержится последовательность цифр. цифр не более 100.
выходные данные
вывести одно число.
примеры
входные данные
80946
выходные данные
1
входные данные
21705
выходные данные
3
Program YouName;
Uses crt; // Использование модуля crt.
Const e = 2.71828; // Объявление константы e.
Var // Раздел для описания переменных.
m,n: Integer; // Объявляем целочисленные переменные.
x,u,y: Single; // Объявляем дробные переменные.
Label check1, check2; // Объявляем метки для оператора Goto.
Begin // Начало "тела" программы.
check1: // Метка для без условного перехода с оператора Goto.
write('Введите m: '); // Вывод текстового сообщения на экран консоли.
// {$I-} - это деректива, которая перехватывает вывод ошибок.
// т.e., если во время выполнение программы между {$I-} и {$I+} не будет ошибок,
// то значение IOResult будет равно 0. Если во время выполения программы произойдет ошибка,
// то программа не остановится, а задаст значение IOResult неравное 0.
// {$I+} соответственно отключает дерективу.
{$I-} // Включение директивы.
readln(m); // Ввод значения переменной m.
{$I+} // Отключение директивы
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check1; // Переход на метку check1
End; // Конец подпрограммы.
check2: // Метка для без условного перехода с оператора Goto.
write('Введите n: '); // Вывод текстового сообщения на экран консоли.
{$I-} // Включение директивы.
readln(n); // Ввод значения переменной n.
{$I+} // Отключение директивы.
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check2; // Переход на метку check2
End; // Конец подпрограммы.
x:=(m*n-exp(ln(e)*((-m)*0.7)))/(2.67); // Вычисление x
y:=ln(2)*(m+1); // Вычисление y
u:=0.125*sqrt(x/y)+exp(ln(e)*cos(x-y)); // Вычисление u
writeln(u:0:4); // Вывод текстового сообщения на экран консоли.
// u:0:4 - это задает переменной u четыре знака после запятой.
End. // Конец "тела" программы.
Пусть ΔABC - равнобедренный, АВ = с - его основание, АС = ВС = b - боковые стороны. По условию треугольник симметричен относительно горизонтальной оси, так что его основание АВ должно быть перпендикулярно горизонтальной оси и при этом АО = ОВ, а вершина С попадет на горизонтальную ось. Разместим ΔABC так, чтобы основание попало на вертикальную ось.
Окружность, описанная вокруг треугольника, пройдет через все три его вершины. Точка М - центр описанной окружности, - лежит на пересечении перпендикуляров, проведенных из середин сторон треугольника. Поскольку ΔABC равнобедренный, то ОС - его высота и отрезок МС, равный радиусу окружности R, также лежит на горизонтальной оси.
Найдем высоту ОС, обозначив её через h, по теореме Пифагора.
ОС - это катет ΔAOC, AO ⊥ OC.
Площадь ΔABC находим по формуле
Для нахождения радиуса R = MC рассмотрим прямоугольные ΔAOC и ΔMDC, имеющие общий угол АСО = α
Теперь легко сделать необходимое построение.
Для этого откладываем от начала координат по горизонтальной оси отрезок ОМ и проводим из него, как из центра, окружность радиуса R. Соединяем между собой три точки пересечения окружностью осей координат и получаем треугольник с длинами сторон, равными заданным.
Ниже приводится программа на языке Microsoft QBasic, позволяющая рассчитать длину отрезка ОМ (Mx - координату х точки М) и радиус описанной окружности R по заданной длине основания с и длине боковой стороны b.
INPUT "Основание: ", c
INPUT "Боковая сторона: ", b
h = SQR(b ^ 2 - (c / 2) ^ 2)
R = b ^ 2 / (2 * h)
Mx = h - R
PRINT "Радиус равен "; R, "Координата центра равна "; Mx
Тестовое решение:
Y:\qbasic>QBASIC.EXE
Основание: 6
Боковая сторона: 5
Радиус равен 3.125 Координата центра равна .875
Чтобы продолжить, нажмите любую клавишу