题目蛮简单,不过代码写的有点长,可能有更好的方法……下面贴出代码,以作纪念。
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 }

浙公网安备 33010602011771号