Pabon_SEC

Roman Digititis

Apr 17th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. map<int,string>DecimalToRoman;
  6.  
  7. string s;
  8.  
  9. void DtoR(int value)
  10. {
  11.     DecimalToRoman[100] = "C"; DecimalToRoman[90] = "XC";
  12.  
  13.     DecimalToRoman[50] = "L"; DecimalToRoman[40] = "XL";
  14.  
  15.     DecimalToRoman[10] = "X"; DecimalToRoman[9] = "IX";
  16.  
  17.     DecimalToRoman[5] = "V"; DecimalToRoman[4] = "IV";
  18.  
  19.     DecimalToRoman[1] = "I";
  20.  
  21.     map<int,string>::reverse_iterator it;
  22.  
  23.     s = "";
  24.  
  25.     for(it = DecimalToRoman.rbegin();it!=DecimalToRoman.rend();it++)
  26.     {
  27.         while(value>=it->first)
  28.         {
  29.             s+=(string) it->second;
  30.  
  31.             value-=it->first;
  32.         }
  33.     }
  34. }
  35.  
  36. int main()
  37. {
  38.     int len,i,j,value,R,I,V,X,L,C;
  39.  
  40.     while(scanf("%d",&value)&&value)
  41.     {
  42.         I=V=X=L=C=0;
  43.  
  44.         for(i=1;i<=value;i++)
  45.         {
  46.             DtoR(i);
  47.  
  48.             len = s.length();
  49.  
  50.             for(j=0;j<len;j++)
  51.             {
  52.                 if(s[j]=='I')
  53.                 {
  54.                     I++;
  55.                 }
  56.                 else if(s[j]=='V')
  57.                 {
  58.                     V++;
  59.                 }
  60.                 else if(s[j]=='X')
  61.                 {
  62.                     X++;
  63.                 }
  64.                 else if(s[j]=='L')
  65.                 {
  66.                     L++;
  67.                 }
  68.                 else if(s[j]=='C')
  69.                 {
  70.                     C++;
  71.                 }
  72.             }
  73.         }
  74.  
  75.         printf("%d: %d i, %d v, %d x, %d l, %d c\n",value,I,V,X,L,C);
  76.  
  77.     }
  78.  
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment