С обзиром на цели број претворити у његов еквивалентни римски број погрешног репрезентације.
Напомена: Следи списак римских симбола (укључујући подрацтиве случајеве):
| Симбол | Вредност |
|---|---|
| Ја | 1 |
| ИВ | 4 |
| У | 5 |
| Ик | 9 |
| К | 10 |
| Кл | 40 |
| Л | 50 |
| Кц | 90 |
| Ц | 100 |
| ЦД | 400 |
| Д | 500 |
| Цм | 900 |
| М | 1000 |
Примери:
Улаз: 9
Излаз: Ик
Објашњење: 9 је написано као "ИКС" у римским бројевима користећи подрацтиве нотације - постављање мањег броја пре већег.оквир ткинтер
I= 1X= 10IXзначи 10 - 1 = 9Улаз: 40
Излаз: Кл
Објашњење: 40 је написано као "КСЛ" у римским бројевима користећи субтрактивну нотацију - постављање мањег броја пре већег броја.
приоритет јава оператора
X= 10 Л = 50XLзначи 50 - 10 = 40
[Решење за општу намену] - О (Н) Време и О (Н) Простор
Упоредите дат број са основним вредностима у налогу 1000 900 500 400 100 90 50 40 10 9 5 4 1. Једном када пронађемо највећу базну вредност која је мања од датог броја Поделимо број са основном вредношћу и понављам процес за мање основне вредности и наводници. Ми ћемо додати римски симбол који одговара основној вредности која се налази на резултат броја пута једнака квоцијентним и поновити поступак остатка.
Схватимо да је приступио примери 3549
Итерација 1
- Од 3549> = 1000; Највећа основна вредност ће у почетку бити 1000.
- Поделите 3549/1000. Квоцијент = 3 рес = 'ммм' (Напомена М припада 1000)
- Остатак = 549
Итерације 2
- 1000> 549> = 500; Највећа основна вредност ће бити 500.
- Поделите 549/500. Кад год је = 1 .рес = '300'
- Остатак = 49
Итерација 3
- 50> 49> = 40; Највећа основна вредност је 40.
- Поделите 49/40. Квоцијент = 1 рес = 'мммдкл'
- Остатак = 9.
Итерација 4
- Број 9 је присутан на листи. рес = 'мммдкл'
- Остатак = 0.
#include using namespace std; // Function to convert decimal to Roman Numerals string toRoman(int x) { // array of values and symbols vector<int> base = {1 4 5 9 10 40 50 90 100 400 500 900 1000}; vector<string> sym = {'I' 'IV' 'V' 'IX' 'X' 'XL' 'L' 'XC' 'C' 'CD' 'D' 'CM' 'M'}; // to store result string res = ''; // Loop from the right side to find // the largest smaller base value int i = base.size() - 1; while (x > 0) { int div = x / base[i]; while (div) { res += sym[i]; div--; } // Repeat the process for remainder x = x % base[i]; i--; } return res; } int main() { int x = 3549; cout << toRoman(x); return 0; }
Java // Function to convert decimal to Roman Numerals public class RomanConverter { public static String toRoman(int x) { // array of values and symbols int[] base = {1 4 5 9 10 40 50 90 100 400 500 900 1000}; String[] sym = {'I' 'IV' 'V' 'IX' 'X' 'XL' 'L' 'XC' 'C' 'CD' 'D' 'CM' 'M'}; // to store result StringBuilder res = new StringBuilder(); // Loop from the right side to find // the largest smaller base value int i = base.length - 1; while (x > 0) { int div = x / base[i]; while (div > 0) { res.append(sym[i]); div--; } // Repeat the process for remainder x = x % base[i]; i--; } return res.toString(); } public static void main(String[] args) { int x = 3549; System.out.println(toRoman(x)); } }
Python # Function to convert decimal to Roman Numerals def to_roman(x): # array of values and symbols base = [1 4 5 9 10 40 50 90 100 400 500 900 1000] sym = ['I' 'IV' 'V' 'IX' 'X' 'XL' 'L' 'XC' 'C' 'CD' 'D' 'CM' 'M'] # to store result res = '' # Loop from the right side to find # the largest smaller base value i = len(base) - 1 while x > 0: div = x // base[i] while div: res += sym[i] div -= 1 # Repeat the process for remainder x %= base[i] i -= 1 return res x = 3549 print(to_roman(x))
C# // Function to convert decimal to Roman Numerals public class RomanConverter { public static string ToRoman(int x) { // array of values and symbols int[] baseValues = {1 4 5 9 10 40 50 90 100 400 500 900 1000}; string[] symbols = {'I' 'IV' 'V' 'IX' 'X' 'XL' 'L' 'XC' 'C' 'CD' 'D' 'CM' 'M'}; // to store result string res = ''; // Loop from the right side to find // the largest smaller base value int i = baseValues.Length - 1; while (x > 0) { int div = x / baseValues[i]; while (div > 0) { res += symbols[i]; div--; } // Repeat the process for remainder x %= baseValues[i]; i--; } return res; } public static void Main() { int x = 3549; Console.WriteLine(ToRoman(x)); } }
JavaScript // Function to convert decimal to Roman Numerals function toRoman(x) { // array of values and symbols const base = [1 4 5 9 10 40 50 90 100 400 500 900 1000]; const sym = ['I' 'IV' 'V' 'IX' 'X' 'XL' 'L' 'XC' 'C' 'CD' 'D' 'CM' 'M']; // to store result let res = ''; // Loop from the right side to find // the largest smaller base value let i = base.length - 1; while (x > 0) { let div = Math.floor(x / base[i]); while (div) { res += sym[i]; div--; } // Repeat the process for remainder x %= base[i]; i--; } return res; } let x = 3549; console.log(toRoman(x));
Излаз
MMMDXLIX
Сложеност времена: О (н) где н је дужина низа одговора која чува конверзију.
Помоћни простор: О (н)
Виртуелна меморија
[За ограничен опсег] - о (н) време и о (н) простор
C++Идеја је заснована на чињеници да имамо ограничен распон за прикривање 0 до 3999. Изолишемо цифре које одговарају хиљадама стотинама десетине и оне места и затим мапирају сваку цифру на одговарајући римски бројни еквивалент заснован на њеној лисичној вредности.
- Продавнице мапирања карактера М за различите квоцијеције 0 1 2 3
- Складиштајте пресликавање Ц Л и И за различите квоцијете од 0 до 9.
Помоћу горе наведених пресликавања директно генеришемо низ резултата.
#include using namespace std; // Function to convert decimal to Roman Numerals string toRoman(int val) { // storing roman values of digits from 0-9 // when placed at different places vector<string> m = {'' 'M' 'MM' 'MMM'}; vector<string> c = {'' 'C' 'CC' 'CCC' 'CD' 'D' 'DC' 'DCC' 'DCCC' 'CM'}; vector<string> x = {'' 'X' 'XX' 'XXX' 'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC'}; vector<string> i = {'' 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX'}; // Converting to roman string thousands = m[val / 1000]; string hundreds = c[(val % 1000) / 100]; string tens = x[(val % 100) / 10]; string ones = i[val % 10]; string ans = thousands + hundreds + tens + ones; return ans; } int main() { int val = 3549; cout << toRoman(val); return 0; }
Java import java.util.*; public class GfG { // Function to convert decimal to Roman Numerals public static String toRoman(int val) { // storing roman values of digits from 0-9 // when placed at different places String[] m = {'' 'M' 'MM' 'MMM'}; String[] c = {'' 'C' 'CC' 'CCC' 'CD' 'D' 'DC' 'DCC' 'DCCC' 'CM'}; String[] x = {'' 'X' 'XX' 'XXX' 'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC'}; String[] i = {'' 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX'}; // Converting to roman String thousands = m[val / 1000]; String hundreds = c[(val % 1000) / 100]; String tens = x[(val % 100) / 10]; String ones = i[val % 10]; String ans = thousands + hundreds + tens + ones; return ans; } public static void main(String[] args) { int val = 3549; System.out.println(toRoman(val)); } }
Python # Function to convert decimal to Roman Numerals def toRoman(val): # storing roman values of digits from 0-9 # when placed at different places m = ['' 'M' 'MM' 'MMM'] c = ['' 'C' 'CC' 'CCC' 'CD' 'D' 'DC' 'DCC' 'DCCC' 'CM'] x = ['' 'X' 'XX' 'XXX' 'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC'] i = ['' 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX'] # Converting to roman thousands = m[val // 1000] hundreds = c[(val % 1000) // 100] tens = x[(val % 100) // 10] ones = i[val % 10] ans = thousands + hundreds + tens + ones return ans if __name__ == '__main__': val = 3549 print(toRoman(val))
C# using System; public class GfG { // Function to convert decimal to Roman Numerals public static string toRoman(int val) { // storing roman values of digits from 0-9 // when placed at different places string[] m = {'' 'M' 'MM' 'MMM'}; string[] c = {'' 'C' 'CC' 'CCC' 'CD' 'D' 'DC' 'DCC' 'DCCC' 'CM'}; string[] x = {'' 'X' 'XX' 'XXX' 'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC'}; string[] i = {'' 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX'}; // Converting to roman string thousands = m[val / 1000]; string hundreds = c[(val % 1000) / 100]; string tens = x[(val % 100) / 10]; string ones = i[val % 10]; string ans = thousands + hundreds + tens + ones; return ans; } public static void Main(string[] args) { int val = 3549; Console.WriteLine(toRoman(val)); } }
JavaScript // Function to convert decimal to Roman Numerals function toRoman(val) { // storing roman values of digits from 0-9 // when placed at different places let m = ['' 'M' 'MM' 'MMM']; let c = ['' 'C' 'CC' 'CCC' 'CD' 'D' 'DC' 'DCC' 'DCCC' 'CM']; let x = ['' 'X' 'XX' 'XXX' 'XL' 'L' 'LX' 'LXX' 'LXXX' 'XC']; let i = ['' 'I' 'II' 'III' 'IV' 'V' 'VI' 'VII' 'VIII' 'IX']; // Converting to roman let thousands = m[Math.floor(val / 1000)]; let hundreds = c[Math.floor((val % 1000) / 100)]; let tens = x[Math.floor((val % 100) / 10)]; let ones = i[val % 10]; let ans = thousands + hundreds + tens + ones; return ans; } let val = 3549; console.log(toRoman(val));
Излаз
MMMDXLIX