페이지

2608번: 로마 숫자

https://www.acmicpc.net/problem/2608


#include<cstdio>
char s[14], t[][3] = { "IV","XL","CD","M" };
int r, w[128];
int main() {
    w['I'] = 1;
    w['V'] = 5;
    w['X'] = 10;
    w['L'] = 50;
    w['C'] = 100;
    w['D'] = 500;
    w['M'] = 1000;
    for (int i = 2; i--;) {
        scanf("%s", s);
        for (int j = 0; s[j]; j++)
            r += s[j + 1] && w[s[j + 1]]>w[s[j]] ? -w[s[j]] : w[s[j]];
    }
    printf("%d\n", r);
    for (int i = 1000, j = 3; i; i /= 10, j--) {
        if (r / i == 9) printf("%c%c", t[j][0], t[j + 1][0]);
        else if (r / i >= 5) {
            putchar(t[j][1]);
            for (int k = 5; k < r / i; k++) putchar(t[j][0]);
        }
        else if (r / i == 4) printf("%c%c", t[j][0], t[j][1]);
        else {
            for (int k = 0; k < r / i; k++) putchar(t[j][0]);
        }
        r %= i;
    }
    return 0;
}

댓글 없음 :

댓글 쓰기