#22085: C++解


s10711123@mail2.blsh.tp.edu.tw (Ritsuki)

學校 : 臺北市立百齡高級中學
編號 : 110747
來源 : [101.136.241.255]
最後登入時間 :
2021-02-03 16:26:58
a013. 羅馬數字 -- NPSC 模擬試題 | From: [123.193.176.29] | 發表日期 : 2020-08-12 00:06

#include<bits/stdc++.h>

using namespace std;

int ToNumber(string str,int *num,int N){

    int i;

    for(i=0;i<str.size();i++){

        if(str[i]=='M'){num[i]=1000;}

        else if(str[i]=='D'){num[i]=500;}

        else if(str[i]=='C'){num[i]=100;}

        else if(str[i]=='L'){num[i]=50;}

        else if(str[i]=='X'){num[i]=10;}

        else if(str[i]=='V'){num[i]=5;}

        else if(str[i]=='I'){num[i]=1;}

    }

    for(i=0;i<str.size();i++){

        if(i==str.size()-1 || num[i]>=num[i+1]){

            N=N+num[i];

        }else{

            N=N+num[i+1]-num[i];

            i++;

        }

    }

    return N;

}

int main(){

    int i;

    string str1,str2;

    while(cin>>str1>>str2){

        if(str1=="#"){

            return 0;

        }

        if(str1==str2){

            cout<<"ZERO"<<endl;

        }else{

            string str3="";

            int N1=0,N2=0,N3;

            int num1[str1.size()],num2[str2.size()];

            N1=ToNumber(str1,num1,N1);

            N2=ToNumber(str2,num2,N2);

            N3=abs(N1-N2);

            if(N3/1000!=0){

                for(i=0;i<N3/1000;i++){

                    str3=str3+"M";

                }

                N3=N3%1000;

            }

            if(N3/500!=0){

                if(N3%500>=400){

                    str3=str3+"CM";

                    N3=N3-900;

                }else{

                    str3=str3+"D";

                    N3=N3%500;

                }

            }

            if(N3/100!=0){

                if(N3/100==4){

                    str3=str3+"CD";

                }else{

                    for(i=0;i<N3/100;i++){

                        str3=str3+"C";

                    }

                }

                N3=N3%100;

            }

            if(N3/50!=0){

                if(N3%50>=40){

                    str3=str3+"XC";

                    N3=N3-90;

                }else{

                    str3=str3+"L";

                    N3=N3%50;

                }

            }

            if(N3/10!=0){

                if(N3/10==4){

                    str3=str3+"XL";

                }else{

                    for(i=0;i<N3/10;i++){

                        str3=str3+"X";

                    }

                }

                N3=N3%10;

            }

            if(N3/5!=0){

                if(N3%5>=4){

                    str3=str3+"IX";

                    N3=N3-9;

                }else{

                    str3=str3+"V";

                    N3=N3%5;

                }

            }

            if(N3/1!=0){

                if(N3==4){

                    str3=str3+"IV";

                }else{

                    for(i=0;i<N3;i++){

                        str3=str3+"I";

                    }

                }

            }

            cout<<str3<<endl;

        }

    }

    return 0;

}

 
ZeroJudge Forum