Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift
Hợp chất hữu cơ chỉ gồm các nguyên tố ~C, H, O~ có khối lượng nguyên tử lần lượt là ~12, 1~ và ~16~.
Người ta viết công thức phân tử của hợp chất hữu cơ ở dạng "nén", ví dụ COOHHH
là CO2H3
hay CH(CO2H)(CO2H)(CO2H)
là CH(CO2H)3
. Nếu ở dạng nén thì số lần lặp là một số ~2 ≤ k ≤ 9~.
Cho công thức phân tử của một hợp chất hữu cơ, hãy tính khối lượng phân tử của nó.
Input
- Dòng đầu ghi số nguyên ~T~ là số bộ test;
- ~T~ dòng tiếp theo, mỗi dòng chứa một xâu ký tự biểu diễn công thức phân tử của hợp chất hữu cơ.
Giới hạn:
- ~1 ≤ T ≤ 1000~; độ dài công thức của mỗi hóa chất không quá ~1000~.
Output
- Gồm ~T~ dòng, mỗi dòng một số nguyên dương là khối lượng của hợp chất ở test tương ứng.
Sample
Input #1
3
COOH
CH(CO2H)3
((CH)2(OH2H)(CHO))3
Output #1
45
148
222
Problem source: Chuyên Sơn La Online Judge
Bình luận
ý tưởng là các bạn tạo stack kiểu nguyên lưu khối lượng các phần tử con bên ngoài dấu() và bên trong ()
-> gặp chữ cái C , H , O thì lưu tương ứng 12 , 1 , 16 ->gặp dấu ( thì phải lưu -1 như kiểu để đánh dấu để tý tính phần trong ngoặc chỉ cộng đến đoạn -1 thôi -> gặp dấu ) thì tính tổng đỉnh của ngăn xếp ( lấy ra rồi xóa ) + vào 1 thằng temp cho đến khi gặp -1 thì dừng , rồi xóa -1 (đang ở đỉnh ngăn xếp đi và thêm temp vào ) -> gặp số thì lấy thằng ở đỉnh ra nhân với số đấy => xóa đỉnh rồi thêm giá trị vừa nhân vào -> cuối cùng thoát ra vòng duyệt sâu bạn chỉ cần cộng các số trong stack lại với nhau là OKELA -> Đêm nay Mu đá chung kết C2 đấy HEHE