97全國能力縣賽 1. 羅馬數字
順便做了兩個轉換的涵式
/*****************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char x[20];
void Romanin(int m)
{
int a,X=0;
for(a=0;a<m;a++)
{
if(x[a]=='I')
X+=1;
if(x[a]=='V')
{
X+=5;
if(a!=0&&x[a-1]=='I')
X-=2;
}
if(x[a]=='X')
{
X+=10;
if(a!=0&&x[a-1]=='I')
X-=2;
if(a!=0&&x[a-1]=='V')
X-=10;
}
if(x[a]=='L')
{
X+=50;
if(a!=0&&x[a-1]=='I')
X-=2;
if(a!=0&&x[a-1]=='V')
X-=10;
if(a!=0&&x[a-1]=='X')
X-=20;
}
if(x[a]=='C')
{
X+=100;
if(a!=0&&x[a-1]=='I')
X-=2;
if(a!=0&&x[a-1]=='V')
X-=10;
if(a!=0&&x[a-1]=='X')
X-=20;
if(a!=0&&x[a-1]=='L')
X-=100;
}
if(x[a]=='D')
{
X+=500;
if(a!=0&&x[a-1]=='I')
X-=2;
if(a!=0&&x[a-1]=='V')
X-=10;
if(a!=0&&x[a-1]=='X')
X-=20;
if(a!=0&&x[a-1]=='L')
X-=100;
if(a!=0&&x[a-1]=='C')
X-=200;
}
if(x[a]=='M')
{
X+=1000;
if(a!=0&&x[a-1]=='I')
X-=2;
if(a!=0&&x[a-1]=='V')
X-=10;
if(a!=0&&x[a-1]=='X')
X-=20;
if(a!=0&&x[a-1]=='L')
X-=100;
if(a!=0&&x[a-1]=='C')
X-=200;
if(a!=0&&x[a-1]=='D')
X-=1000;
}
}
printf("%d\n",X);
}
void Romanout(int X)
{
if(X/1000>0)
{
if(X/1000==4)
printf("MMMM");
if(X/1000==3)
printf("MMM");
if(X/1000==2)
printf("MM");
if(X/1000==1)
printf("M");
X=X-X/1000*1000;
}
if(X/100>0)
{
if(X/100==9)
printf("CM");
if(X/100==8)
printf("DCCC");
if(X/100==7)
printf("DCC");
if(X/100==6)
printf("DC");
if(X/100==5)
printf("D");
if(X/100==4)
printf("CD");
if(X/100==3)
printf("CCC");
if(X/100==2)
printf("CC");
if(X/100==1)
printf("C");
X=X-X/100*100;
}
if(X/10>0)
{
if(X/10==9)
printf("XC");
if(X/10==8)
printf("LXXX");
if(X/10==7)
printf("LXX");
if(X/10==6)
printf("LX");
if(X/10==5)
printf("L");
if(X/10==4)
printf("XL");
if(X/10==3)
printf("XXX");
if(X/10==2)
printf("XX");
if(X/10==1)
printf("X");
X=X-X/10*10;
}
if(X>0)
{
if(X==9)
printf("IX");
if(X==8)
printf("VIII");
if(X==7)
printf("VII");
if(X==6)
printf("VI");
if(X==5)
printf("V");
if(X==4)
printf("IV");
if(X==3)
printf("III");
if(X==2)
printf("II");
if(X==1)
printf("I");
}
printf("\n");
}
main()
{
int n,m,a,num;
while(scanf("%d",&n)==1)
for(a=0;a<n;a++)
{
scanf("%d",&m);
if(m==1)
{scanf("%s",x);Romanin(strlen(x));}
else
{scanf("%d",&num);Romanout(num);}
}
return 0;
}