Roman numerals time limit: 1 second memory limit: 64 m
Problem description
Now let's think about Roman numerals!
- |
The Roman numerals for 1 through 10 are I, II, III, IV, V, VI, VII, VIII, IX, and X. |
- |
The Roman numerals for 20, 30, 40, and 50 are XX, XXX, XL, and L. |
- |
The Roman numeral for any other two-digit number less than 50 can be constructed by concatenating the numeral for its tens and the numeral for its ones. For example, 47 is 40 + 7 = "XL" + "VII" = "XLVII ". |
Now given a roman numeral n (n <= 50), please output the value of the number.
Input
The first line of the input is an integer T, which is the numbers of the test cases.
For each test case, there is one line which is a roman numeral whose value is less or equal to 50.
Output
For each test case you shoshould output the value of the Roman numeral.
Sample Input
2
I
II
Sample output
1
2
#include<stdio.h>#include<string.h>void conv(char *input,int *value){int length = strlen(input);int i;for(i = 0; i < length; ++i){if(input[i] == 'I'){if(input[i+1] == 'X'){*value += 9;++i;}else if(input[i+1] == 'V'){*value +=4;++i;}else{*value += 1;}}else if(input[i] == 'V'){*value += 5;}else if(input[i] == 'X'){if(input[i+1] == 'L'){*value += 40;++i;}else{*value +=10;}}else{*value += 50;}}return;}int main(){char input[8];int test_case;int value;scanf("%d",&test_case);while(test_case--){scanf("%s",input);value = 0;conv(input,&value);printf("%d\n",value);}return 0;}