Перевірка на нуль#3383

Перевірка на нуль

1 секунда
122,174 мегабайта
Середня

Скоріш за все, вам відомо, що x(\sin^2 x + \cos^2 x) - x = 0, а також що \sin(2x) - 2 \sin x \cos x = 0. Але чи відомо вам, що \tan(2x)(x - x \tan^2 x) - 2x \tan x = 0? Або чи повірите ви в те, що \sin (2x) - 2\cos x = 0?

Останнє твердження хибне, але не вірте нам. Вам слід написати програму, яка перевірить, чи спрощується заданий алгебраїчний вираз до нуля (всякий раз, коли він визначений).

Вхідні дані

Вхід складається з декількох тестів, кожен з яких міститься в одному рядку. Кожен тест починається цілим числом — кількістю лексем, що описують формулу. Наступні лексем задають формулу в оберненому польському запису. Запис задається наступним чином: спочатку є порожній стек, та наступні команди маніпулюють його вмістом:

  • x заносить змінну до стеку.

  • sin, cos і tan замінюють верхній елемент стеку на значення його синуса, косинуса та тангенса відповідно.

  • +, - та * замінюють два верхні елементи стеку ( на вершині, за ним слідує ) на їх суму (b + a), різницю (b - a) та добуток (b \times a) відповідно.

Вхідні дані коректні, результатом виразу є значення на вершині стеку. Довжина рядка не більша за символів. Аргументами функцій можуть бути функції, тобто вираз вигляду x sin sin є допустимим, але рекурсія не буде заходити далі вказаного випадку. Вхід завершується рядком, в якому n=0.

Вихідні дані

Для кожного тесту виведіть в окремому рядку: Identity, якщо вираз тотожно дорівнює нулю, та Not an identity інакше.

Приклади

Приклад 1

Loading
Loading