Bookmark and Share

free counters
Back to Problem list
Problem 24: Write a program to covert a decimal number to roman number

#include<stdio.h>
#define maxn 10
int value[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
char Roman[][3] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

int Recur(int n) {
    int i;
    if(n == 0) 
        return 0;
    for(i = 12; i>=0; i--) {
        if(value[i] >= n) {
                break;
        }
    }
    if(i < 0) i++;
    if(value[i] > n) i++;
    printf("%s",Roman[i]);
    Recur(n-value[i]);
}
int main() {
    int n;
    while(scanf("%d",&n) == 1) {
        Recur(n);
        printf("\n");
    }
    return 0;
}



Back to Problem list