Computer >> Máy Tính >  >> Lập trình >> Lập trình

Số thành chữ số La mã


Số La Mã là các số không có vị trí. Một số chữ số được đặt cùng nhau để tạo thành một số trong số la mã. Ví dụ, số 75 có thể được biểu thị bằng 75 =50 + 10 + 10 + 5, vì vậy các chữ số la mã là LXXV.

Trong bài toán này, một số được cung cấp ở định dạng thập phân, nhiệm vụ của chúng ta là chuyển nó thành chuỗi số La Mã.

Có các ký hiệu khác nhau và giá trị của chúng, như thế này.

Tôi
IV
V
IX
X
XL
L
XC
C
CD
D
CM
M
MMMM
V ’
1
4
5
9
10
40
50
90
100
400
500
900
1000
4000
5000


Sử dụng bảng này, chúng ta có thể dễ dàng tìm thấy các chữ số la mã của một số nhất định.

Đầu vào và Đầu ra

 Đầu vào:Số thập phân:3569 Đầu ra:Số La Mã tương đương với 3569 là:MMMDLXIX 

Thuật toán

 decToRoman (nuList, num) 

Đầu vào: Danh sách chữ số với giá trị của nó, số để chuyển đổi thành la mã.

Đầu ra: Các chữ số La Mã cho số đã cho.

 Bắt đầu nếu num ≠ 0, sau đó max:=lấy giá trị số lớn nhất, không lớn hơn số hiển thị nuList [max] .symbol num:=num - nuList [max] .value decToRoman (nuList, num) End  

Ví dụ

 #include  using namespace std; struct number {string sym; int val;}; int maxNume (số nu [], int num) {int index; for (int i =0; i <15; i ++) // 15 chữ số trong mảng if (nu [i] .val <=num) index =i; // chỉ số số giá trị nhỏ nhất, không lớn hơn chỉ số trả về số;} void decToRoman (số nu [], int num) {int max; if (num! =0) {max =maxNume (nu, num); cout <> số; if (number> 0 &&number <=5000) {// kiểm tra số đầu vào cout <<"Tương đương La Mã của" < 

Đầu ra

 Nhập một số thập phân:3569 Tương đương với 3569 La Mã là:MMMDLXIX