2872252_wa.cc
来自「做的POJ的一些题目」· CC 代码 · 共 146 行
CC
146 行
#include<iostream>
#include<string>
using namespace std;
typedef struct
{
int money;
string c;
}node;
node m[14];
int num[10],visit[10],value[1000];
char mg[10001];
void init()
{
value[int('I')]=1;
value[int('V')]=5;
value[int('X')]=10;
value[int('L')]=50;
value[int('C')]=100;
value[int('D')]=500;
value[int('M')]=1000;
m[0].c="M";m[0].money=1000;
m[1].c="CM";m[1].money=900;
m[2].c="D";m[2].money=500;
m[3].c="CD";m[3].money=400;
m[4].c="C";m[4].money=100;
m[5].c="XC";m[5].money=90;
m[6].c="L";m[6].money=50;
m[7].c="XL";m[7].money=40;
m[8].c="X";m[8].money=10;
m[9].c="IX";m[9].money=9;
m[10].c="V";m[10].money=5;
m[11].c="IV";m[11].money=4;
m[12].c="I";m[12].money=1;
m[13].c="O";m[13].money=0;
}
void output(int sum)
{
int j=0;
if(sum==0)
cout<<m[13].c;
while(sum>0)
{
if(sum-m[j].money>=0)
{
cout<<m[j].c;
sum=sum-m[j].money;
}
else
j++;
}
printf("\n");
}
int main()
{
init();
int sum1=0,sum=0,sign=0,i,t=0;
for(i=0;i<10;i++)
visit[i]=false;
while(true)
{
scanf("%s",mg);
if(strcmp(mg,"QUIT")==0)
{
printf("Bye\n");
break;
}
if(strcmp(mg,"RESET")==0)
{
printf("Ready\n");
for(i=0;i<10;i++)
visit[i]=false;
continue;
}
sum=sum1=0;
int n=strlen(mg);
sign=0;
t=1;
i=2;
while(i<n)
{
if(mg[i]=='+' || mg[i]=='-')
{
if(sign==1)
sum=sum1+sum;
else if(sign==2)
sum=sum-sum1;
else
sum=sum1;
if(mg[i]=='+')
sign=1;
else
sign=2;
t=1;
i++;
sum1=0;
continue;
}
if(mg[i]<='9' && mg[i]>='0')
{
if(visit[mg[i]-'0']==false)
{
printf("Error\n");
break;
}
sum1=sum1+num[mg[i]-'0'];
i++;
continue;
}
if(t==1)
{
sum1=sum1+value[mg[i]];
t=0;
}
else
{
if((mg[i-1]=='I' && (mg[i]=='V' || mg[i]=='X')) || (mg[i-1]=='X' && (mg[i]=='L' || mg[i]=='C')) || (mg[i-1]=='C' && (mg[i]=='D' || mg[i]=='M')))
sum1=value[mg[i]]+sum1-value[mg[i-1]]*2;
else
sum1=value[mg[i]]+sum1;
t=1;
}
i++;
}
if(i==n)
{
if(sign==1)
sum=sum+sum1;
else if(sign==2)
sum=sum-sum1;
else
sum=sum1;
if(sum>10000 || sum<0)
printf("Error\n");
else
{
printf("%c%c",mg[0],mg[1]);
output(sum);
num[mg[0]-'0']=sum;
visit[mg[0]-'0']=true;
}
}
}
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?