/C06034 - Số la mã
<Problem>
https://code.ptit.edu.vn/student/question/C06034#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define max(i, j) ((i > j) ? i : j)
int main() {
int t;
scanf("%d", &t);
getchar();
int I = 1;
int V = 5;
int X = 10;
int L = 50;
int C = 100;
int D = 500;
int M = 1000;
while (t--) {
char s[500];
gets(s);
int sum = 0;
for (int i = 0; i < strlen(s); i++) {
switch (s[i])
{
case 'I': {
if (s[i + 1] == 'V') {
sum += 4;
i++;
}
else if (s[i + 1] == 'X') {
sum += 9;
i++;
}
else sum += 1;
break;
}
case 'V': {
sum += 5;
break;
}
case 'X': {
if (s[i + 1] == 'L') {
sum += 40;
i++;
}
else if (s[i + 1] == 'C') {
sum += 90;
i++;
}
else sum += 10;
break;
}
case 'L': {
sum += 50;
break;
}
case 'C': {
if (s[i + 1] == 'D') {
sum += 400;
i++;
}
else if (s[i + 1] == 'M') {
sum += 900;
i++;
}
else sum += 100;
break;
}
case 'D': {
sum += 500;
break;
}
case 'M': {
sum += 1000;
break;
}
}
}
printf("%d", sum);
printf("\n");
}
return 0;
}