В постфиксной записи (или обратной польской записи) операция записывается после двух операндов. Например, сумма двух чисел A и B записывается как A B +. Запись B C + D * обозначает привычное нам (B + C) * D, а запись A B C + D * + означает A + (B + C) * D.
Достоинство постфиксной записи в том, что она не требует скобок и дополнительных соглашений о приоритете операторов для своего чтения.
Дано выражение в постфиксой записи, содержащее однозначные числа, операции +, –, *. Вычислите значение записанного выражения.
В единственной строке записано выражение в постфиксной записи, содержащее однозначные числа и операции +, –, *. Строка содержит не более 100 чисел и операций. Числа и операции отделяются друг от друга ровно одним пробелом.
Необходимо вывести значение записанного выражения. Гарантируется, что результат выражения, а также результаты всех промежуточных вычислений по модулю меньше \(2^{31}\).
8 9 + 1 7 - *
-102
Вещественное число задается следующим образом (форма Бэкуса-Наура): "Number" ::= ["Sign"] "digit" {"digit"}["Separator" "digit" {"digit"}]["Exponent" ["Sign"] "digit" {"digit"}] "digit" ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' "Sign" ::= '+' | '-' "Separator" ::= '.' "Exponent" ::= 'E' | 'e'
Требуется проверить, является ли вводимая строка корректной записью числа.
Вводится одна строка, содержащая не более 200 символов.
Необходимо вывести YES или NO в зависимости от того, является ли данная строка записью одного вещественного числа.
5.3
YES
-2.
NO
Дано число. Требуется определить, корректно ли оно. Число может быть записано в 2-ух формах:
- обычной
- экспоненциальной
Число в обычной форме не должно содержать ведущих нулей. Знак "-" должен стоять только перед непололожительным числом и только в одном экземпляре. Число также может быть записано в двоичной, восьмеричной или шестнадцатиричной системе счисления. В различных системах счисления число будет иметь вид:
<%0x><обычная форма> - в шестнадцатиричной (состоит из цифр и маленьких латинских букв). Число знаков после "0x" не должно превышать 16.
<%0o><обычная форма> - в восьмеричной. Число знаков после "0o" не должно превышать 8.
<%0b><обычная форма> - в двоичной. Число знаков после "0b" не должно превышать 20.
Знак "-" также может быть только один и должен стоять перед символом "%". Примеры корректных чисел в обычной форме: 75, -%0x6f4,%0b101110,%0o1705.
Число в экспоненциальной форме представляет собой запись следующего вида (необязательные элементы заключены в квадратные скобки):
<число в обычной форме>[<.><неотрицательное число в обычной форме, может содержать ведущие нули, не влияющие на подсчет количества знаков и стоящие до символа "%" если число не в десятичной системе счисления>]<E>[<знак "+" или "-"><число в обычной форме>].
Примеры корректных чисел в экспоненциальной форме: 1.517E+4, -%0b101.00%0xfE–19, -7E.
Единственная строка, не содержащая пробелов, длиной не более 50 символов.
Выведите "YES", если строка удовлетворяет условию задачи или "NO" в противном случае.
74
YES
%0x5f7.00%0b1011E-%0o71
YES
Илья уже изучил много видов уравнений. Он знает, что они бывают линейными, квадратными, рациональными и так далее. Теперь Илья хочет поразить воображение одноклассников, написав программу, которая будет по введенному уравнению определять его вид. Однако с программированием у Ильи серьезные проблемы, и он попросил вас написать такую программу.
Илья хочет, чтобы программа поддерживала 3 типа уравнений: квадратные, тригонометрические, логарифмические. Также он решил, что вводимое уравнение всегда будет однотипным, то есть будет содержать элементы только одного типа уравнений. В уравнении должна быть только одна неизвестная переменная - большая или маленькая латинская буква (в условии в качестве переменной возьмем x). Рассмотрим формальное определение уравнения:
<уравнение> ::= <элемент><=><элемент>
Типы элементов:
<линейный элемент> ::= подстрока, содержащая цифры, неизвестную переменную, знаки операций (*,-,+,/,^(возведение в степень)) и круглые скобки.
<квадратный элемент> ::= добавление к линейному элементу конструкций "x^2" и "xx". Вообще несколько подряд идущих x аналогично x^(количество x), то есть xxxx эквивалентно x^4.
<логарифмический элемент> ::= добавление к линейному элементу конструкций "log","ln","exp". Log и ln обозначают натуральный логарифм.
<тригонометрический элемент> ::= добавление к линейному элементу конструкций "sin","cos","tn".
Илья также хочет, чтобы программа проверяла корректность уравнения. Уравнение некорректно если:
1. В записи уравнения есть ошибки, например, скобки не образуют правильной скобочной последовательности и тому подобное.
2. В каких-то числах встречаются ведущие нули.
3. В уравнении встречается несколько неизвестных переменных или неизвестные функции. Уравнение также некорректно, если в нем нет неизвестных переменных.
4. В уравнении встречается деление на 0 (других неверных операций быть не может). Более того, если до совершения арифметических операций, в уравнении деления на 0 не было, а потом оно появилось, то уравнение некорректно. Например, уравнение 2-x=x/(4-2^2) некорректно. Гарантируется, что результат таких промежуточных вычислений всегда помещается в тип int (longint в паскале), а все числа в уравнении не превосходят по модулю 40000. При вычислении синуса, косинуса, тангенса (вычисляются в радианах), логарифма и экспоненты следует брать лишь целую часть результата.
Знак "*" может быть опущен в следующих случаях:
1. Перед открывающей и после закрывающей скобок.
2. После числа, стоящего перед неизвестной переменной.
3. После неизвестной переменной или числа, стоящих перед функцией.
Единственная строка, длиной не более 255 символов с кодами от 32 до 127. Считать, что заглавные и прописные латинские буквы одинаковы.
Выведите wrong, если уравнение некорректно, в противном случае выведите тип уравнения: square для квадратного, trigonometric для тригонометрического, logarithmic для логарифмического или another, если уравнение не подпадает ни под один из типов.
x(x+5)(x+1)x(3+7-2^4)2=0
another
(sin(x))^2+(cos(x))^2=1
trigonometric
Сегодня в школе Васе рассказывали про числовые промежутки. Каждый из них задаётся парой чисел — своими началом и концом, и информацией о том, включается ли в него каждый из концов. Таким образом, существует четыре типа промежутков:
Рассмотрим пример: [\(3 \over 2\), 4) В данном случае \(d\) = 1, поэтому вместо \(4 \over 1\) пишут просто 4. В этом множестве содержится два целых числа: 2 и 3, а число 4 не содержится.
Помогите Васе с домашней работой — напишите программу, которая по заданному числовому промежутку посчитает количество целых чисел, содержащихся в нём.
Первым символом идёт открывающаяся квадратная или круглая скобка. Далее записано число x в формате \(a \over b\) либо a, где |a| ≤ 109, 0 < b ≤ 109. После следует запятая и пробел. Потом — число y в таком же формате. Далее — закрывающаяся квадратная или круглая скобка. После неё идёт перевод строки и конец файла.
Гарантируется, что данный числовой промежуток не является пустым (то есть содержит в себе хотя бы одно число, не обязательно целое).
По заданному числовому промежутку выведите единственное число — количество целых чисел в нём.
[3/2, 4)
2
[-2/4, 5/3]
2
[-1000, 1000]
2001
[-2, 4/3]
4