1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| char str[31][5] = {
" ", "I", "II", "III", "IV", "V", "VI", "VII", "VIII",
"IX", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX",
"XC", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC",
"CM", "M", "MM", "MMM"
};
char arr1[8] = "IVXLCDM";
int num[31] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200,
300, 400, 500, 600, 700, 800, 900, 1000, 2000, 3000
};
int a[26];
void _find(int x){
int j = 30;
while (num[j] > x)j--;
for (; j >= 1; j--){
if (x >= num[j]){
x -= num[j];
for (int i = 0; i < strlen(str[j]); i++){
a[str[j][i] - 'A']++;
}
}
if (x == 0)return;
}
}
int main(){
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++){
_find(i);
}
if (a[int('I') - 65] != 0) printf("I %d\n", a[int('I') - 65]);
if (a[int('V') - 65] != 0) printf("V %d\n", a[int('V') - 65]);
if (a[int('X') - 65] != 0) printf("X %d\n", a[int('X') - 65]);
if (a[int('L') - 65] != 0) printf("L %d\n", a[int('L') - 65]);
if (a[int('C') - 65] != 0) printf("C %d\n", a[int('C') - 65]);
if (a[int('D') - 65] != 0) printf("D %d\n", a[int('D') - 65]);
if (a[int('M') - 65] != 0) printf("M %d\n", a[int('M') - 65]);
} |