Romaya bütöv

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Amazon alma Bloomberg microsoft Kahin
Riyaziyyat SimBaxılıb 95

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Romaya bütöv dönüşüm. Biz verdik nömrə N və N-in Roma nömrəsini yazmalıyıq. Roma nömrələri {I, V, X, L, C, D, M} dəyərlərinin istifadəsi ilə təmsil olunur. Yaxşı başa düşmək üçün bəzi nümunələrə baxaq.

Giriş Formatı

Yalnız N tam ədədi olan bir sətir.

Çıxış formatı

Nəticəni simli formatda çap edin. Başqa bir şəkildə deyirik ki, Romanın N sayını ehtiva edən yalnız bir sətir çap edin.

Məhdudiyyətlər

  • 1 <= N <= 3999.
Example Input-1:
47
Example Output-1:
XLVII
Example Input-2:
957
Example Output-2:
CMLVII

Tamsayı Romaya izahı

Bəzi əvvəlcədən hesablanmış dəyərlərdən istifadə edərək müəyyən bir rəqəm üçün roman nömrəsini tapırıq. Nömrəni və onun roman nömrəsini bir cüt vektorunda saxlayırıq . Digər nömrələrin hesablanmasında istifadə etdiyimiz bəzi əvvəlcədən hesablanmış rəqəmlərin siyahısı.

Romaya bütövPin

Hər hansı bir rəqəm üçün Roman nömrəsini tapdığımızda, bu rəqəmi roman dəyərlərinə neçə dəfə göstərmək üçün saydan neçə dəfə istifadə etdiyimizi tapmaq lazımdır. Aşağıda həlli tapmaq üçün izlədiyimiz alqoritm verilmişdir.

Üçün alqoritm Romaya bütöv

Algorithm:
Step:1 Set sz as the size of vector(sz=v.size()) and string ans as empty(ans="").
Step:2 Find the value of count which we get when we divide the number(N) by value store in vector v[sz-1].first.
Step:3 Add the roman value of number count times which is precalculated in vector v[sz-1].second.
Step:4 Update the values(sz=sz-1 and n=n%(v[sz-1].first)).
Step:5 Repeat the step 2-4 while N is greater than 0.

Üçün tətbiqetmə Romaya bütöv

/*C++ Implementation of Integer to Roman conversion Problem*/ 
#include<bits/stdc++.h>
using namespace std;
/*function to add the precalcuated values in vector.*/
void set_precalculated(vector<pair<int,string>>&v)
{
    v.push_back({1,"I"});
    v.push_back({4,"IV"});
    v.push_back({5,"V"});
    v.push_back({9,"IX"});
    v.push_back({10,"X"});
    v.push_back({40,"XL"});
    v.push_back({50,"L"});
    v.push_back({90,"XC"});
    v.push_back({100,"C"});
    v.push_back({400,"CD"});
    v.push_back({500,"D"});
    v.push_back({900,"CM"});
    v.push_back({1000,"M"});
}
int main() 
{ 
    int n;
    /*take N as input*/
    cin>>n;
    /*create a vector to store the precalculated roman values for some numbers(base numbers).*/
    vector<pair<int,string>> v;
    /*store the values*/
    set_precalculated(v);
    /*string which containg the final answer.*/
    string ans="";
    /*size of the vector*/
    int sz=v.size();
    /*repeat while N greter than 0.*/
    while(n>0&&sz>=0)
    {
        /*turn store the value which means we need to add v[sz-1].second turn number of times.*/
        int turn=n/(v[sz-1].first);
        /*update the value of N.*/
        n=n%(v[sz-1].first);
        /*add to the answer.*/
        for(int k=0;k<turn;k++)
        {
            ans+=(v[sz-1].second);
        }
        /*move to the next lowest precalculated number in vector*/
        sz--;
    }
    cout<<ans<<endl;
    return 0; 
}
1232
MCCXXXII

Zamanın mürəkkəbliyi

O (1) çünki roman nömrəsini tapmaq üçün çəkilən vaxt sabitdir O (1).

Kosmik Mürəkkəblik

O (1) çünki tətbiqetmə və ya əməliyyatları yerinə yetirmək üçün burada əlavə yer yaratmırıq.

Crack Sistemi Dizayn Müsahibələri
Translate »