#include <iostream>
using namespace std;
int main()
{
string rome1, rome2;
while(cin >> rome1){
if(rome1=="#")
break;
cin >> rome2;
int add1=0, add2=0;
for(int i=0; i<rome1.length(); i++){
switch (rome1[i]){
case 'I':
add1++;
break;
case 'V':
if(rome1[i]=='I')
add1-=2;
add1+=5;
break;
case 'X':
if(rome1[i]=='I')
add1-=2;
add1+=10;
break;
case 'L':
if(rome1[i-1]=='X')
add1-=20;
add1+=50;
break;
case 'C':
if(rome1[i-1]=='X')
add1-=20;
add1+=100;
break;
case 'D':
if(rome1[i-1]=='C')
add1-=200;
add1+=500;
break;
case 'M':
if(rome1[i-1]=='C')
add1-=200;
add1+=1000;
break;
}
}
for(int i=0; i<rome2.length(); i++){
switch (rome2[i]){
case 'I':
add2++;
break;
case 'V':
if(rome2[i-1]=='I')
add2-=2;
add2+=5;
break;
case 'X':
if(rome2[i-1]=='I')
add2-=2;
add2+=10;
break;
case 'L':
if(rome2[i-1]=='X')
add2-=20;
add2+=50;
break;
case 'C':
if(rome2[i-1]=='X')
add2-=20;
add2+=100;
break;
case 'D':
if(rome2[i-1]=='C')
add2-=200;
add2+=500;
break;
case 'M':
if(rome2[i-1]=='C')
add2-=200;
add2+=1000;
break;
}
}
if(add2>add1)
add1=add2-add1;
else if(add2<add1)
add1=add1-add2;
else{
add1=0;
cout << "ZERO";
}
while(add1!=0){
if(add1>=1000){
cout << "M";
add1-=1000;
}
else if(add1>=900){
cout << "CM";
add1-=900;
}
else if(add1>=500){
cout << "D";
add1-=500;
}
else if(add1>=490){
cout << "XD";
add1-=490;
}
else if(add1>=400){
cout << "CD";
add1-=400;
}
else if(add1>=100){
cout << "C";
add1-=100;
}
else if(add1>=90){
cout << "XC";
add1-=90;
}
else if(add1>=50){
cout << "L";
add1-=50;
}
else if(add1>=40){
cout << "XL";
add1-=40;
}
else if(add1>=10){
cout << "X";
add1-=10;
}
else if(add1>=9){
cout << "IX";
add1-=9;
}
else if(add1>=5){
cout << "V";
add1-=5;
}
else if(add1>=4){
cout << "IV";
add1-=4;
}
else if(add1>=1){
cout << "I";
add1--;
}
}
cout <<endl;
}
return 0;
system("pause");
}
以上是程式碼,正確答案為MMDCCLXV,顯示我的答案為MMDCCLXVII。因為不知道確切輸入值所以也不知道問題在哪,但用其他方式運算2765都沒有問題。求高手解答QQ
#include <iostream>
using namespace std;
int main()
{
string rome1, rome2;
while(cin >> rome1){
if(rome1=="#")
break;
cin >> rome2;
int add1=0, add2=0;
for(int i=0; i<rome1.length(); i++){
switch (rome1[i]){
case 'I':
add1++;
break;
case 'V':
if(rome1[i-1]=='I')
add1-=2;
add1+=5;
break;
case 'X':
if(rome1[i-1]=='I')
add1-=2;
add1+=10;
break;
case 'L':
if(rome1[i-1]=='X')
add1-=20;
add1+=50;
break;
case 'C':
if(rome1[i-1]=='X')
add1-=20;
add1+=100;
break;
case 'D':
if(rome1[i-1]=='C')
add1-=200;
add1+=500;
break;
case 'M':
if(rome1[i-1]=='C')
add1-=200;
add1+=1000;
break;
}
}
for(int i=0; i<rome2.length(); i++){
switch (rome2[i]){
case 'I':
add2++;
break;
case 'V':
if(rome2[i-1]=='I')
add2-=2;
add2+=5;
break;
case 'X':
if(rome2[i-1]=='I')
add2-=2;
add2+=10;
break;
case 'L':
if(rome2[i-1]=='X')
add2-=20;
add2+=50;
break;
case 'C':
if(rome2[i-1]=='X')
add2-=20;
add2+=100;
break;
case 'D':
if(rome2[i-1]=='C')
add2-=200;
add2+=500;
break;
case 'M':
if(rome2[i-1]=='C')
add2-=200;
add2+=1000;
break;
}
}
if(add2>add1)
add1=add2-add1;
else if(add2<add1)
add1=add1-add2;
else{
add1=0;
cout << "ZERO";
}
while(add1!=0){
if(add1>=1000){
cout << "M";
add1-=1000;
}
else if(add1>=900){
cout << "CM";
add1-=900;
}
else if(add1>=500){
cout << "D";
add1-=500;
}
else if(add1>=490){
cout << "XD";
add1-=490;
}
else if(add1>=400){
cout << "CD";
add1-=400;
}
else if(add1>=100){
cout << "C";
add1-=100;
}
else if(add1>=90){
cout << "XC";
add1-=90;
}
else if(add1>=50){
cout << "L";
add1-=50;
}
else if(add1>=40){
cout << "XL";
add1-=40;
}
else if(add1>=10){
cout << "X";
add1-=10;
}
else if(add1>=9){
cout << "IX";
add1-=9;
}
else if(add1>=5){
cout << "V";
add1-=5;
}
else if(add1>=4){
cout << "IV";
add1-=4;
}
else if(add1>=1){
cout << "I";
add1--;
}
}
cout <<endl;
}
return 0;
system("pause");
}