Nguồn đề bài: http://vn.spoj.com/problems/MMASS/
Nội dung bài viết
1. Đề bài MMASS PTIT121E spoj
Hóa chất chỉ gồm các nguyên tố C, H, O có trọng lượng 12,1, 16 tương ứng.
Nó được biểu diễn 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 >=2 và <=9.
Tính khối lượng hóa chất.
Input
Gồm một dòng mô tả hóa chất không quá 100 kí tự chỉ gồm C, H, O, (, ), 2,..,9.
Output
Khối lượng của hóa chất (luôn <=10000).
Example
INPUT | OUTPUT |
COOH | 45 |
INPUT | OUTPUT |
CH(CO2H)3 | 148 |
INPUT | OUTPUT |
((CH)2(OH2H)(C(H))O)3 | 222 |
2. Gợi ý MMASS PTIT121E spoj
– Ứng dụng stack. xem code mẫu để hiểu rõ hơn
3. Code tham khảo MMASS PTIT121E spoj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | const fi=''; var s:string; n:longint; f:text; Stack:array[0..100+50] of longint; last,i,tmp,stmp:longint; function KL(x:char):longint; begin if x='C' then exit(12); if x='O' then exit(16); exit(1); end; procedure add(x:longint); begin inc(last); stack[last]:=x; end; function push:longint; begin push:=stack[last]; dec(last); end; begin assign(f,fi); reset(f); readln(f,s); close(f); n:=length(s); last:=0; for i:=1 to n do begin if s[i]='(' then begin add(0); continue; end; if s[i] in ['C','H','O'] then begin add(KL(s[i])); continue; end; if s[i] in ['2'..'9'] then begin add((ord(s[i])-48)*push); continue; end; if s[i]=')' then begin stmp:=0; while last<>0 do begin tmp:=push; if tmp=0 then break; stmp:=stmp+tmp; end; add(stmp); end; end; tmp:=0; for i:=1 to last do inc(tmp,stack[i]); writeln(tmp); end. |
Bài viết liên quan
- MECUNG spoj – Mê cung
- Code Đường đi Euler – Euler paths
- BCSTACK spoj PTIT – Cấu trúc dữ liệu ngăn xếp
- BCCOMMAS PTIT – Chèn dấu phẩy
- PTIT123J PTIT spoj – Dấu ngoặc đúng
- QBSQUARE spoj – Hình vuông 0 1
- CHESSCBG spoj – Bàn cờ thế
- hướng dẫn EXPAR – spoj
- QBRECT spoj – Hình chữ nhật 0 1
- MTHCN spoj – Hình chữ nhật kì lạ