fork download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5.  
  6.  
  7. main () {
  8. // freopen ("input.txt", "r", stdin);
  9. // freopen ("output.txt", "w", stdout);
  10.  
  11. string s, st="", sp="", sg="";
  12. cin>>s;
  13. int t=s.rfind('(',s.size()-1);
  14. int p=s.find(')',t);
  15. // cout<<t<<" "<<p;
  16.  
  17.  
  18. while (t!=-1) {
  19.  
  20. s[t]='0';
  21. p=s.find(')',t);
  22. s[p]='0';
  23. if (s[p+1]>=50 && s[p+1]<=57) {
  24. st=""; sp=""; sg="";
  25. for (int i=0; i<t; i++) {
  26. st=st+s[i];
  27. }
  28. int so=s[p+1]-'0';
  29. for (int i=1; i<=so; i++) {
  30. for (int j=t+1; j<p; j++) {
  31. sg=sg+s[j];
  32. }
  33. }
  34. for (int i=p+2; i<s.size(); i++) {
  35. sp=sp+s[i];
  36. }
  37. s=st+sg+sp;
  38. }
  39. t=s.rfind('(',s.size()-1);
  40. }
  41. int tong=0;
  42. for (int i=0; i<s.size(); i++) {
  43. if (s[i]==67) {
  44. tong=tong+12;
  45. }
  46. if (s[i]==72) {
  47. tong=tong+1;
  48. }
  49. if (s[i]==79) {
  50. tong=tong+16;
  51. }
  52. if (s[i]>=50 && s[i]<=57) {
  53. int so=s[i]-'0';
  54. if (s[i-1]==67) {
  55. tong=tong+12*(so-1);
  56. }
  57. if (s[i-1]==72) {
  58. tong=tong+1*(so-1);
  59. }
  60. if (s[i-1]==79) {
  61. tong=tong+16*(so-1);
  62. }
  63. }
  64. }
  65.  
  66. cout<<tong;
  67. }
Success #stdin #stdout 0s 16064KB
stdin
((CH)2(OH2H)(C(H))O)3
stdout
222