ינטעגער צו רוימער לעעטקאָדע סאַלושאַן


שוועריקייט לעוועל מיטל
אָפט געבעטן אין אַדאָובי אַמאַזאָן עפּל בלאַקראַק בלומבערג עווערנאָטע facebook גוגל לינקעדין מייקראָסאָפֿט אָראַקל טוויטטער יאַהאָאָ
מאַט שטריקל

אין דעם פּראָבלעם, מיר געבן אַ גאַנץ נומער און מיר דאַרפֿן צו בייַטן אין רוימער ציפער. אזוי דער פּראָבלעם איז בכלל ריפערד צו ווי "ינטעגער צו רוימער" און דאָס איז ינטעגער צו רוימישע לעעטקאָדע סאַלושאַן. אויב עמעצער ווייסט ניט וועגן רוימער נומעראַלס. אין די אלטע צייטן, מען האט נישט נוצן ינטאַדזשערז ווי מיר געוויינט אין די לעצטע צייט.

רוימער נומעראַלס זענען יוזשאַוואַלי געשריבן פֿון לינקס צו רעכט אין דיקריסינג סדר, אָבער עס זענען עטלעכע אויסנעמען. אויב עטלעכע נומער איז קלענערער ווי די ווייַטער נומער מיר אַראָפּרעכענען די קראַנט נומער פון די positive סומע. א כלל איז נישט צו איבערחזרן די זעלבע נומער מער ווי 3 מאָל. מען זאָל קאָנטראָלירן די בילד אונטן פֿאַר די גאַנץ נומער צו רוימער ציפער קאַנווערזשאַן.

ינטעגער צו רוימער לעעטקאָדע סאַלושאַן

3
III

דערקלערונג: זינט איך איז עקוויוואַלענט צו 1, מיר איבערחזרן עס דריי מאָל צו באַקומען די סומע = 3.

4
IV

דערקלערונג: מיר קענען נישט איבערחזרן איך 4 מאָל ווייַל מיר קענען נישט איבערחזרן איך מער ווי 3 מאָל. אזוי מיר פלאַך אַן I איידער V. זינט איך איז ווייניקער ווי V, אַזוי 1 איז סאַבטראַקטיד פון גאַנץ וואָס איז גלייַך צו 5. אזוי מאכן אַ גאַנץ סומע גלייַך צו 4.

צוגאַנג פֿאַר ינטעגער צו רוימער לעעטקאָדע סאַלושאַן

די פּראָבלעם "ינטעגער צו רוימישע" קענען זיין סאַלווד אין זשעדנע שטייגער ווען מיר פּרובירן צו בייַטן די נומער צו די העכסטן מעגלעך ציפער. די ברוט קראַפט צוגאַנג צו דעם פּראָבלעם איז ניט מעגלעך ווייַל עס איז ניט פיזאַבאַל אָדער בכלל אָנווענדלעך. אין דעם שטייגער מיר פאָרזעצן צו קלענערער דינאָמאַניישאַנז אין רוימער נומעראַל. אָבער, דעם צוגאַנג וועט פאַרלאָזן ווען מיר פּרובירן צו קאָנווערט 4. דעם צוגאַנג וועט דרוקן 4 מאל I. אַזוי מיר דאַרפֿן צו געפֿינען אַ וועג צו באַקומען אַרום דעם.

נו, אויב מיר קוק גוט, עס זענען בלויז עטלעכע קאַונטאַבאַל מעגלעך וועגן ווען מיר קענען טרעפן דעם ויסנעם. די ויסנעם איז נאָר ווען מיר איבערחזרן עטלעכע נומער מער ווי 3 מאל. אַזוי נאָר פּרובירן צו געפֿינען די וועגן צו שרייַבן די ינטאַדזשערז וואָס קענען פאַלן אין ויסנעם. מיר וויסן אַז די ויסנעם זענען 4, 9, 40, 90, 400, 900 וואָס קענען זיין קאָנווערטעד צו IV, IX, XL, XC, CD, CM ריספּעקטיוולי.

דילינג מיט אויסנעמען

אַזוי ביז איצט מיר געדאַנק צו קאַנווערטינג די געגעבן גאַנץ נומער צו די פאַראַנען אָריגינעל רוימער נומעראַלס. אָבער צו באַקומען די ויסנעם, מיר האַנדלען מיט זיי סעפּעראַטלי. אזוי, מיר מאַכן צוויי ערייז איינער וואָס סטאָרז די ינטאַגראַל ווערט קאָראַספּאַנדינג יעדער רוימער ציפער. די אנדערע מענגע סטאָרז די רוימישע נומעראַלס. ביידע די ערייז קראָם די ינטאַדזשערז און רוימישע נומערן אין די זעלבע קאָראַספּאַנדינג ינדאַסיז.

איצט מיר נאָר האָבן צו נוצן קאַנווערזשאַן וואָס איז געטאן אין זשעדנע שטייגער. אָנהייבן מיט די גרעסטע רוימער ציפער און אויב די נומער איז גרעסער ווי די קראַנט עקוויוואַלענט רוימער ציפער. לייג די רוימער ציפער אין אַן ענטפער שטריקל און אַראָפּרעכענען די ינטאַגראַל ווערט פון די געגעבן גאַנץ נומער. אַראָפּרעכענען די קראַנט נומער ביז די געגעבן גאַנץ נומער איז גרעסער ווי די קראַנט נומער. אַמאָל איר דערגרייכן אַ פונט ווען די קראַנט נומער איז קלענערער ווי די קראַנט גאַנץ נומער ווערט. סימפּלי טשעק פֿאַר די ווייַטער קלענערער רוימער ציפער. אַמאָל מיר האָבן פאַרענדיקן די רוימער נומעראַלס, מיר וועלן צוריקקומען דעם ענטפער.

קאָד פֿאַר ינטעגער צו רוימער לעעטקאָדע סאַלושאַן

C ++ קאָד פֿאַר ינטעגער צו רוימער לעעטקאָדע סאַלושאַן

#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), זינט מיר האָבן סטאָרד בלויז אַ קעסיידערדיק נומער פון וועריאַבאַלז, און די ערייז וואָס מיר געוויינט האָבן קעסיידערדיק גרייס.