मान लीजिए कि हमारे पास एक संख्या संख्या है। हमें इसे इसके समकक्ष रोमन अंक में बदलना होगा। रोमन अंकों में नीचे दिए गए प्रतीक और मान होते हैं -
- "मैं" =1
- "वी" =5
- "X" =10
- "एल" =50
- "सी" =100
- "डी" =500
- "एम" =1000
इन प्रतीकों को आम तौर पर सबसे बड़े से सबसे छोटे, और बाएं से दाएं क्रम में लिखा जाता है, और सभी प्रतीकों के मूल्यों को जोड़कर गणना की जा सकती है। लेकिन कुछ विशेष मामले हैं, जहां कम मूल्य का प्रतीक उच्च मूल्य के प्रतीक के बाईं ओर है, इसका संकेत है कि निम्न मूल्य को उच्च मूल्य से घटाया जाता है।
ये ऐसे मामलों के उदाहरण हैं -
- "I" "V" से पहले है, मान 4।
- "I" "X" से पहले है, मान 9.
- "X" "L" से पहले है, मान 40.
- "X" "C" से पहले है, मान 90.
- "C" "D" से पहले है, मान 400.
- "C" "M" से पहले है, मान 900।
रोमन अंकों में भी कुछ नियम हैं -
- कोई भी प्रतीक 3 बार से अधिक दोहराया नहीं जाता है।
- चिह्न "V", "L", और "D" दोहराए नहीं जाते हैं।
इसलिए, यदि इनपुट n =1520 जैसा है, तो आउटपुट "MDXX" होगा, क्योंकि "MDXX" 1000 + 500 + 10 + 10 =1520 इंगित करता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- res:=रिक्त स्ट्रिंग
- तालिका =इस प्रारूप में जोड़े (वैल, प्रतीक) वाली एक सूची, जहां वैल मूल्य है और प्रतीक संबद्ध प्रतीक है [(1000, "एम"), (900, "सीएम"), (500, " डी"), (400, "सीडी"), (100, "सी"), (90, "एक्ससी"), (50, "एल"), (40, "एक्सएल"), (10, "एक्स" ), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
- तालिका में प्रत्येक जोड़ी (टोपी, रोमन) के लिए, करें
- d :=num/cap का तल
- m :=num mod cap
- रेस:=रेस + रोमन * डी
- संख्या:=मी
- रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(num): res = "" table = [ (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"), ] for cap, roman in table: d, m = divmod(num, cap) res += roman * d num = m return res num = 1520 print(solve(num))
इनपुट
1520
आउटपुट
MDXX