>>760
#include <stdio.h>
#define RO(i,v,x) "",#i,#i#i,#i#i#i,#i#v,#v,#v#i,#v#i#i,#v#i#i#i,#i#x
const char * conv[][10] = {{RO(I,V,X)},{RO(X,L,C)},{RO(C,D,M)},{RO(M,M,M)}};
void internal_print(int val, int dim)
{ if (val > 0) internal_print(val / 10, dim + 1),printf(conv[dim][val % 10]); }
void print(int val) { internal_print(val, 0), puts(""); }
int main(void) { int i; while (scanf("%d", &i) == 1) print(i); return 0; }

>>776の方がうまいな