રોમન લેટકોડ સોલ્યુશનથી પૂર્ણાંક


મુશ્કેલી સ્તર મધ્યમ
વારંવાર પૂછવામાં આવે છે એડોબ એમેઝોન સફરજન બ્લેકરોક બ્લૂમબર્ગ Evernote ફેસબુક Google LinkedIn માઈક્રોસોફ્ટ ઓરેકલ Twitter યાહૂ
મઠ શબ્દમાળા

આ સમસ્યામાં, અમને પૂર્ણાંક આપવામાં આવે છે અને રોમન અંકમાં રૂપાંતરિત કરવું જરૂરી છે. આમ સમસ્યાને સામાન્ય રીતે "પૂર્ણાંકથી રોમન" ​​તરીકે ઓળખવામાં આવે છે અને આ રોમન લેટકોડ સોલ્યુશનથી પૂર્ણાંકો છે. જો કોઈ રોમન અંકો વિશે જાણતો નથી. જૂના સમયમાં, લોકો આપણે પૂર્ણાંકોનો ઉપયોગ કરતા નથી, કેમ કે આપણે હાલના સમયમાં ઉપયોગ કરીએ છીએ.

રોમન આંકડાઓ સામાન્ય રીતે ઘટતા ક્રમમાં ડાબેથી જમણે લખાયેલા હોય છે, પરંતુ આના કેટલાક અપવાદો પણ છે. જો કેટલાક અંકો જે આગામી અંકો કરતાં નાના હોય તો આપણે વર્તમાન અંકને સકારાત્મક રકમમાંથી બાદ કરીએ. અંગૂઠાનો સામાન્ય નિયમ એ જ આંકડાને 3 કરતા વધુ વખત પુનરાવર્તિત કરવાનો નથી. પૂર્ણાંક માટે રોમન આંકડાકીય રૂપાંતર માટે નીચેની છબી તપાસવી જોઈએ.

રોમન લેટકોડ સોલ્યુશનથી પૂર્ણાંક

3
III

સમજૂતી: હું 1 ની સમકક્ષ હોવાથી, રકમ = 3 મેળવવા માટે અમે તેને ત્રણ વખત પુનરાવર્તિત કરીએ છીએ.

4
IV

સમજૂતી: આપણે 4 વખત પુનરાવર્તન કરી શકતા નથી, કારણ કે હું we વખતથી વધુ પુનરાવર્તન કરી શકતો નથી. તેથી આપણે વી પહેલા એક I નું વિમાન લગાવીએ છીએ, કારણ કે હું વી કરતા ઓછું છે, આમ 3 થી કુલ બાદબાકી કરવામાં આવે છે જે 1 ની બરાબર છે. આમ કુલ રકમ 5 ની બરાબર બનાવે છે.

પૂર્ણાંક માટે રોમન લેટકોડ સોલ્યુશન માટે અભિગમ

“પૂર્ણાંકથી રોમન” સમસ્યાને લોભી રીતે ઉકેલી શકાય છે જ્યાં પહેલા આપણે નંબરને સૌથી વધુ સંભવિત અંકોમાં રૂપાંતરિત કરવાનો પ્રયાસ કરીએ. સમસ્યાનું ઘાતક અભિગમ શક્ય નથી કારણ કે તે ન તો શક્ય છે અથવા સામાન્ય રીતે લાગુ પણ નથી. આ રીતે આપણે રોમન આંકડામાં નાના સંપ્રદાયો તરફ આગળ વધીએ છીએ. પરંતુ જ્યારે આપણે 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), કારણ કે આપણે ફક્ત સતત સંખ્યાબંધ વેરીએબલો સંગ્રહિત કર્યા છે અને આપણે જે એરે વાપરી છે તે પણ સતત કદ ધરાવે છે.