#[allow(unused)] use proconio::{input, marker::Chars}; use std::collections::VecDeque; fn main() { input! { s: String, } let mut ops = s .chars() .filter(|c| ['+', '*'].contains(&c)) .collect::>(); let mut nums = s .split(&['+', '*']) .collect::>() .iter() .map(|&c| c.to_string()) .collect::>(); let mut result = nums.pop_front().unwrap().parse::().unwrap(); while !nums.is_empty() { let op = ops.pop_front().unwrap(); let rhs = nums.pop_front().unwrap().parse::().unwrap(); if op == '+' { result *= rhs; } else { result += rhs; } } println!("{result}") }