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 <iostream>
#include <vector>
#include <utility>
using namespace std;
const vector< pair<int, string> > numlist = {pair<int, string>(1000,"M"), pair<int, string>(900,"CM"), pair<int, string>(500,"D"), pair<int, string>(400,"CD"), pair<int, string>(100,"C"), pair<int, string>(90,"XC"), pair<int, string>(50,"L"), pair<int, string>(40,"XL"), pair<int, string>(10,"X"), pair<int, string>(9,"IX"), pair<int, string>(5,"V"), pair<int, string>(4,"IV"), pair<int, string>(1,"I")};
string arabToRoman(int n)
{
string result;
for(size_t i(0); i < numlist.size(); ++i)
{
while(n >= numlist[i].first)
{
n -= numlist[i].first;
result += numlist[i].second;
}
}
return result;
}
int main()
{
for(int i(1); i < 4000; ++i)
cout << arabToRoman(i) << '\n';
return 0;
} |