रोमन लीटकोड सोल्यूशनचा पूर्णांक


अडचण पातळी मध्यम
वारंवार विचारले अडोब ऍमेझॉन सफरचंद काळा दगड ब्लूमबर्ग Evernote फेसबुक Google संलग्न मायक्रोसॉफ्ट ओरॅकल ट्विटर याहू
गणित अक्षरमाळा

या समस्येमध्ये, आम्हाला एक पूर्णांक दिलेला आहे आणि आपल्याला रोमन अंकात रूपांतरित करणे आवश्यक आहे. अशाप्रकारे या समस्येस सामान्यतः “इंटिजर टू रोमन” असे संबोधले जाते आणि ही इंटिजर टू रोमन लीटकोड सोल्यूशन आहे. जर कोणाला रोमन अंकांबद्दल माहिती नसेल तर. जुन्या काळात, आम्ही अलीकडील काळात वापरतो म्हणून लोक पूर्णांक वापरत नाहीत.

रोमन अंक सहसा कमी होणार्‍या क्रमाने डावीकडून उजवीकडे लिहिले जातात, परंतु याला अपवाद आहेत. जर पुढील अंकांपेक्षा काही लहान असेल तर आम्ही वर्तमान संख्येस सकारात्मक बेरीजमधून वजा करतो. थंबचा सामान्य नियम 3 वेळापेक्षा जास्त वेळा एकाच अंकांची पुनरावृत्ती करत नाही. पूर्णांक संख्येसाठी रोमन अंक रूपांतरणासाठी खालील प्रतिमा पहावी.

रोमन लीटकोड सोल्यूशनचा पूर्णांक

3
III

स्पष्टीकरणः मी 1 च्या समतुल्य असल्यामुळे बेरीज = 3 मिळविण्यासाठी आम्ही तीन वेळा पुनरावृत्ती करतो.

4
IV

स्पष्टीकरणः आम्ही मी 4 वेळा पुनरावृत्ती करू शकत नाही, कारण मी 3 वेळापेक्षा जास्त पुनरावृत्ती करू शकत नाही. व्ही च्या आधी आपण I च्या विमानाने विमान घेतो. कारण मी व्हीपेक्षा कमी आहे. अशा प्रकारे 1 ने एकूण 5 वजा आहे जे 4 च्या बराबरीने बनते.

पूर्णांक रोमन लेटकोड सोल्यूशनसाठी दृष्टीकोन

“इंटिजर टू रोमन” ही समस्या लोभाच्या पद्धतीने सोडविली जाऊ शकते जिथे प्रथम आम्ही क्रमांकाला सर्वात जास्त संख्येमध्ये रूपांतरित करण्याचा प्रयत्न करतो. समस्येकडे जबरदस्तीचा दृष्टीकोन शक्य नाही कारण तो व्यवहार्य किंवा सामान्यपणे लागू नाही. अशा प्रकारे आम्ही रोमन अंकातील छोट्या संप्रदायाकडे जात आहोत. Convert. रूपांतरित करण्याचा प्रयत्न करताना हा दृष्टीकोन अपयशी ठरेल. हा दृष्टिकोन times वेळा आय मुद्रित करेल. म्हणून, आपल्याला या मार्गावर जाण्यासाठी मार्ग शोधणे आवश्यक आहे.

बरं, जर आपण बारकाईने पाहिले तर असे काही संभाव्य मार्ग आहेत जेव्हा आपण या अपवादात जाऊ शकू. हा अपवाद केवळ जेव्हा आम्ही काही वेळा 3 पेक्षा जास्त वेळा पुनरावृत्ती करतो. म्हणूनच, अपवादात येऊ शकणारे पूर्णांक लिहिण्याचे मार्ग शोधण्याचा प्रयत्न करा. आम्हाला हे समजले की अपवाद 4, 9, 40, 90, 400, 900 आहेत जे अनुक्रमे IV, IX, XL, XC, CD, CM मध्ये रूपांतरित होऊ शकतात.

अपवाद हाताळताना

म्हणून आतापर्यंत आम्ही दिलेल्या पूर्ण संख्येस उपलब्ध असलेल्या मूळ वर्णातील रोमन अंकांमध्ये रूपांतरित करण्याचा विचार करीत होतो. परंतु अपवाद जाणून घेण्यासाठी आम्ही त्यांना स्वतंत्रपणे हाताळतो. अशा प्रकारे आपण दोन तयार करतो अ‍ॅरे प्रत्येक रोमन अंकांशी संबंधित अविभाज्य मूल्य संचयित करते. इतर अ‍ॅरे रोमन अंक संचयित करते. हे दोन्ही अ‍ॅरे समान परस्पर निर्देशांकावर पूर्णांक आणि रोमन क्रमांक संचयित करतात.

आता आपल्याकडे फक्त रूपांतरण वापरणे बाकी आहे जे लोभीपणाने केले जाते. सर्वात मोठ्या रोमन अंकांसह प्रारंभ करा आणि जर संख्या सध्याच्या रोमन अंकांच्या तुलनेत जास्त असेल. उत्तरेमध्ये रोमन अंक जोडा स्ट्रिंग आणि दिलेल्या पूर्णांकापासून एकत्रित मूल्य वजा करा. दिलेला पूर्णांक वर्तमान संख्येपेक्षा मोठा होईपर्यंत वर्तमान संख्या वजा. एकदा आपण एका बिंदूवर पोहोचता तेव्हा वर्तमान संख्या वर्तमान पूर्णांक मूल्यापेक्षा लहान असते. फक्त पुढील लहान रोमन अंक तपासा. एकदा आम्ही सर्व रोमन अंक पूर्ण केले की आम्ही उत्तर परत मिळवितो.

पूर्णांक ते रोमन लीटकोड सोल्यूशनसाठी कोड

पूर्णांक ते रोमन लेटकोड सोल्यूशनसाठी सी ++ कोड

#include <bits/stdc++.h>
using namespace std;

string intToRoman(int num) {
    vector<string> romans({"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"});
    vector<int> value({1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000});
    int seqSize = romans.size();
    int idx = seqSize - 1;
    string ans = "";
    while(num>0){
        while(value[idx]<=num){
            ans += romans[idx];
            num -= value[idx];
        }
        idx--;
    }
    return ans;
}

int main(){
    cout<<intToRoman(4);
}
IV

पूर्णांक ते रोमन लेटकोड सोल्यूशनसाठी जावा कोड

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static String intToRoman(int num) {
        String romans[] = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
        int value[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
        int seqSize = romans.length;
        int idx = seqSize - 1;
        String ans = "";
        while(num>0){
            while(value[idx]<=num){
                ans += romans[idx];
                num -= value[idx];
            }
            idx--;
        }
        return ans;
    }
    public static void main(String[] args){
    	System.out.println(intToRoman(4));
    }
}

 

IV

गुंतागुंत विश्लेषण

वेळ कॉम्प्लेक्सिटी

ओ (1), कारण निकाल शोधण्यासाठी आम्ही सतत अनेक पावले वापरत आहोत.

स्पेस कॉम्प्लेक्सिटी

ओ (1), आम्ही केवळ स्थिर संख्या व्हेरिएबल्सचा संग्रह केला आहे, त्यायोगे आपण वापरत असलेल्या अ‍ॅरेमध्ये स्थिर आकारही असतो.