0.Đánh số trang bằng số La Mã


Submit solution

Points: 1 (partial)
Time limit: 1.0s
Memory limit: 98M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

ECI (Editio Chronica Incredibilis) là một bộ sách cổ. Nó luôn luôn sử dụng các chữ số La Mã để đánh số trang. Và quyển sách của nó không bao giờ có hơn 999 trang. Khi cần thiết, sách được chia thành các tập.

Bạn phải viết một chương trình, cho một số hệ thập phân, hiển thị tương đương của nó bằng chữ số La Mã.

Hãy nhớ rằng:

I là viết tắt của 1,

V cho 5,

X cho 10,

L cho 50,

C cho 100,

D cho 500

và M là viết tắt của 1000.

Đầu vào

Đầu vào là một số nguyên dương N (0 < N <1000).

Đầu ra

Đầu ra là số N được viết bằng chữ số La Mã trong một dòng đơn. Luôn luôn sử dụng chữ in hoa.

VÍ DỤ 1

INPUT 1

666

OUTPUT 1

DCLXVI

VÍ DỤ 2

INPUT 2

83

OUTPUT 2

LxXXIII

VÍ DỤ 4

INPUT 4

999

OUTPUT 4

CMXCIX


Comments


  • 0
    manh_ĐTVT5_K60  commented on May 13, 2020, 2:10 a.m. edited

    //Ai có code nào tối ưu hơn đoạn dưới k ạ, cho e tham khảo

    #include<stdio.h>
    void in(int x, int so)
    {
        if(x>0)
        {
            for(int i=0;i<x;i++)
            {
                if(so==1000)
                  printf("M");
                else if(so==500)
                  printf("D");
                else if(so==100)
                  printf("C");
                else if(so==50)
                  printf("L");
                else if(so==10)
                  printf("X");
                else if(so==5)
                  printf("V");  
                else if(so==1)
                  printf("I");          
            }
        }
    }
    int main()
    {
        int k,n;
        int a[]={1000,500,100,50,10,5,1};
        scanf("%d",&n);
            for(int i=0;i<7;i++)
            {
                k=n/a[i];
                n=n%a[i];
                in(k,a[i]);
                if(n==0)
                  break;            
    
            }
        return 0;
    }

    • 0
      CNTT2_K59  commented on May 13, 2020, 3:38 a.m.

      Code by prochicken007

      #include <bits/stdc++.h>
      using namespace std;
      
      int main() {    
          string hun[10]={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
          string doz[10]={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
          string row[10]={"","I","II","III","IV","V","VI","VII","VIII","IX"};
          int n; scanf("%d",&n);
          int t1=n%10;
          n/=10;
          int t2=n%10;
          n/=10;
          int t3=n%10;
          cout << hun[t3] << doz[t2] << row[t1];
      }