MMASS - Mass of Molecule

Tác giả: happyboy99x

Ngôn ngữ: C++

#include<cstdio>
#include<cstring>

int mass(char c) { return c == 'C' ? 12 : c == 'H' ? 1 : 16; }

char s[200];

int calc(int lo, int hi) {
	int res = 0;
	for(int i = lo; i <= hi;) 
		if(s[i] == '(') {
			int cnt = 1, st = i+1;
			for(++i; cnt != 0; ++i) 
				if(s[i] == ')') --cnt;
				else if(s[i] == '(') ++cnt;
			if(s[i] >= 0x30 && s[i] <= 0x39) res += calc(st,i-2) * (s[i++] - 0x30);
			else res += calc(st,i-2);
		} else {
			if(s[i+1] >= 0x30 && s[i+1] <= 0x39) res += mass(s[i]) * (s[(++i)++] - 0x30);
			else res += mass(s[i++]);
		}
	return res;
}

int main() {
	scanf("%s", s);
	printf("%d\n", calc(0, strlen(s) - 1));
	return 0;
}

Download