#include int strlen(char *s){ int i=0; while(s[i]!='\0'){i++;} return i; } int convert(char s){ switch (s) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; } return 0; } void construct(int a,char m1,char m2,char m3){ char s[5]; int i=0; switch(a){ case 3: s[i]=m1; i++; case 2: s[i]=m1; i++; case 1: s[i]=m1; s[i+1]='\0'; printf("%s",s); return; case 4: printf("%c%c",m1,m2); return; case 5: case 6: case 7: case 8: s[0]=m2; for(i=0;i0){ i=0; r[0]=getchar(); while(r[i]!=' ' && r[i]!='\n'){ i++; r[i]=getchar(); } l=i; p=0; c=0; for(i=l-1;i>=0;i--){ c=convert(r[i]); d=0; while(i-d-1>=0 && r[i]==r[i-d-1]){ d++; } if(p!=0 && p>c){ a-=c*(d+1); }else{ a+=c*(d+1); } p=c; i-=d; } if(a>3999){ printf("ERROR\n"); return 0; } n--; } for(i=0;i<4;i++){ b[i]=a%10; a/=10; } construct(b[3],'M','?','?'); construct(b[2],'C','D','M'); construct(b[1],'X','L','C'); construct(b[0],'I','V','X'); printf("\n"); return 0; }