Задача №3194. Простое уравнение
Илья уже изучил много видов уравнений. Он знает, что они бывают линейными, квадратными, рациональными и так далее. Теперь Илья хочет поразить воображение одноклассников, написав программу, которая будет по введенному уравнению определять его вид. Однако с программированием у Ильи серьезные проблемы, и он попросил вас написать такую программу.
Илья хочет, чтобы программа поддерживала 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