Here you will get program to convert decimal number to roman numeral in C and C++.

**How it Works?**

- Divide the given number in the order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value.
- Display the corresponding roman symbol of largest base value obtained by above method in output.
- Subtract the given number with largest base value to get new number.
- Repeat above process with the new number until it becomes 0.

**Example:**

Decimal Number: 250

- Divide it in order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value. Here 250 is divided by 100. The corresponding roman symbol for 100 is C.
- Subtract 250 with 100 (largest base value in previous step) to get new number i.e. 150.
- Again divide 150 in the order mentioned earlier. It is divided by 100, so corresponding roman symbol is C.
- Subtract 150 with 100 to get new number i.e. 50.
- Divide 50 again in the order mentioned earlier. 50 is divided by 50, so corresponding roman symbol is L.
- Subtract 50 with 50. The new number obtained is 0 so we stop here.
- The final roman numeral is
**CCL**.

Below program implements above algorithm.

## Program to Convert Decimal Number to Roman Numeral in C

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include<stdio.h> void decimal2roman(int num){ int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols int i = 0; while(num){ //repeat process until num is not 0 while(num/decimal[i]){ //first base value that divides num is largest base value printf("%s",symbol[i]); //print roman symbol equivalent to largest base value num -= decimal[i]; //subtract largest base value from num } i++; //move to next base value to divide num } } int main() { printf("250 -> "); decimal2roman(250); printf("\n1550 -> "); decimal2roman(1550); printf("\n670 -> "); decimal2roman(670); return 0; } |

**Output**

*250 -> CCL*

*1550 -> MDL*

*670 -> DCLXX*

## Program to Convert Decimal Number to Roman Numeral in C++

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include<iostream> using namespace std; void decimal2roman(int num){ int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols int i = 0; while(num){ //repeat process until num is not 0 while(num/decimal[i]){ //first base value that divides num is largest base value cout<<symbol[i]; //print roman symbol equivalent to largest base value num -= decimal[i]; //subtract largest base value from num } i++; //move to next base value to divide num } } int main() { cout<<"250 -> "; decimal2roman(250); cout<<"\n1550 -> "; decimal2roman(1550); cout<<"\n670 -> "; decimal2roman(670); return 0; } |

Comment below if you any queries related to above program.

sir,how can i write the programs without any time complexity and space complexity