题目蛮简单,不过代码写的有点长,可能有更好的方法……下面贴出代码,以作纪念。

View Code
  1 /*{
  2 ID:jzy3209981
  3 PROG:preface
  4 LANG:C++
  5 }*/
  6 #include<stdio.h>
  7 #include<iostream>
  8 #include<string.h>
  9 #include<math.h>
 10 using namespace std;
 11 
 12 void t(int n,char ch[20])
 13 {
 14     int i=0;
 15     while(n!=0)
 16     {
 17         if(n>=1000)
 18         {
 19             ch[i]='M';
 20             i++;
 21             n-=1000;
 22         }
 23         else if(n<1000&&n>=900)
 24         {
 25             ch[i]='C';
 26             i++;
 27             ch[i]='M';
 28             i++;
 29             n-=900;
 30         }
 31         else if(n<900&&n>=500)
 32         {
 33             ch[i]='D';
 34             i++;
 35             n-=500;
 36         }
 37         else if(n<500&&n>=400)
 38         {
 39             ch[i]='C';
 40             i++;
 41             ch[i]='D';
 42             i++;
 43             n-=400;
 44         }
 45         else if(n<400&&n>=100)
 46         {
 47             ch[i]='C';
 48             i++;
 49             n-=100;
 50         }
 51         else if(n<100&&n>=90)
 52         {
 53             ch[i]='X';
 54             i++;
 55             ch[i]='C';
 56             i++;
 57             n-=90;
 58         }
 59         else if(n<90&&n>=50)
 60         {
 61             ch[i]='L';
 62             i++;
 63             n-=50;
 64         }
 65         else if(n<50&&n>=40)
 66         {
 67             ch[i]='X';
 68             i++;
 69             ch[i]='L';
 70             i++;
 71             n-=40;
 72         }
 73         else if(n<40&&n>=10)
 74         {
 75             ch[i]='X';
 76             i++;
 77             n-=10;
 78         }
 79         else if(n==9)
 80         {
 81             ch[i]='I';
 82             i++;
 83             ch[i]='X';
 84             i++;
 85             n-=9;
 86             ch[i]=NULL;        
 87         }
 88         else if(n<9&&n>=5)
 89         {
 90             ch[i]='V';
 91             i++;
 92             n-=5;
 93         }
 94         else if(n==4)
 95         {
 96             ch[i]='I';
 97             i++;
 98             ch[i]='V';
 99             i++;
100             n-=4;
101             ch[i]=NULL;
102         }
103         else
104         {
105             ch[i]='I';
106             i++;
107             n--;
108         }
109     }
110     ch[i]=NULL;
111 }
112 int main()
113 {
114     freopen ("preface.in","r",stdin);
115     freopen ("preface.out","w",stdout);
116     int n,i,j,len;
117     char s[20];
118     char Roman[7]={'I','V','X','L','C','D','M'};
119     int sign[7]={0};
120     scanf("%d",&n);
121     for(i=1;i<=n;i++)
122     {
123         memset(s,0,sizeof(s));
124         t(i,s);    
125         len=strlen(s);
126         for(j=0;j<len;j++)
127         {
128             switch(s[j])
129             {
130             case 'I':sign[0]++;break;
131             case 'V':sign[1]++;break;
132             case 'X':sign[2]++;break;
133             case 'L':sign[3]++;break;
134             case 'C':sign[4]++;break;
135             case 'D':sign[5]++;break;
136             case 'M':sign[6]++;break;
137             }
138         }
139     }
140     for(i=0;i<7;i++)
141     {
142         if(sign[i]==0)
143             continue;
144         else
145             printf("%c %d\n",Roman[i],sign[i]);
146     }
147     return 0;
148 }

 

posted on 2012-07-22 11:40  醉春雨  阅读(141)  评论(0)    收藏  举报