Скажіть, у мене є вираз:
9 * 8 + 1 - 4
Цей вираз можна інтерпретувати шістьма різними способами, залежно від переваги оператора:
(((9 * 8) + 1) - 4) = 69 (* + -)
((9 * 8) + (1 - 4)) = 69 (* - +)
((9 * (8 + 1)) - 4) = 77 (+ * -)
(9 * ((8 + 1) - 4)) = 45 (+ - *)
((9 * 8) + (1 - 4)) = 69 (- * +)
(9 * (8 + (1 - 4))) = 45 (- + *)
Скажіть, я розробник, і мені не здається запам'ятовувати таблиці пріоритетів тощо, тому я просто збираюся здогадуватися.
У цьому випадку найбільша помилка буде 45-77, що є різницею 32. Це означає, що мої здогадки будуть відхилені лише максимум 32.
Змагання
Беручи під увагу вираз , що складається з чисел і +
, -
, *
, /
(цілочисельне ділення) і %
, вихідний абсолютна різниця найбільшого і найменшого можливого значення для цього виразу, на основі пріоритету операторів.
Технічні умови
- Вхідний вираз не буде містити круглі дужки, і кожен оператор ліво-асоціативний.
- Вхідний вираз буде містити лише неотримані цілі числа. Однак субекспресія може оцінюватися як негативні (наприклад
1 - 4
). - Ви можете взяти вираз у будь-якому розумному форматі. Наприклад:
"9 * 8 + 1 - 4"
"9*8+1-4"
[9, "*", 8, "+", 1, "-", 4]
[9, 8, 1, 4], ["*", "+", "-"]
- Вхід буде містити щонайменше 1 та максимум 10 операторів.
- Будь-який вираз, що містить ділення або модуль на 0, слід ігнорувати.
- Можна припустити, що по модулю не будуть надані негативні операнди.
Випробування
9 * 8 + 1 - 4 32
1 + 3 * 4 3
1 + 1 0
8 - 6 + 1 * 0 8
60 / 8 % 8 * 6 % 4 * 5 63
%
оператор працює на від’ємних числах? Таким чином, як C або Python чи щось інше?
%
, що у другому прикладі ви маєте два різних пріоритети.