Дано целое число. Преобразуйте его в римскую запись (символы I, V, X, L, C, D, M).
Примеры
Пример 1
3000 = MMM as 1000 (M) + 1000 (M) + 1000 (M)
700 = DCC as 500 (D) + 100 (C) + 100 (C)
40 = XL as 10 (X) less of 50 (L)
9 = IX as 1 (I) less of 10 (X)
Note: 49 is not 1 (I) less of 50 (L) because the conversion is based on decimal places
Пример 2
50 = L
8 = VIII
Пример 3
1000 = M
900 = CM
90 = XC
4 = IV
Решение
Решение
/** * Временная сложность: O(1) * Пространственная сложность: O(1) * * Хотя есть вложенные циклы, внешний цикл всегда проходит максимум 13 элементов, * а внутренний цикл для каждого числа ограничен (например, 'M' максимум 3 раза). * Общее количество операций не зависит от размера входного числа, а определяется * константным диапазоном (1-3999), поэтому сложность константная. */var intToRoman = function(num) { const values = [ [1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'], [100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'], [10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I'] ]; let result = ''; for (const [value, symbol] of values) { while (num >= value) { result += symbol; num -= value; } } return result;};