#17612: 自己跑和系統跑出來結果不一樣


10530578 (小弘)

學校 : 臺北市立成功高級中學
編號 : 61467
來源 : [123.193.36.247]
最後登入時間 :
2019-04-28 10:50:23
a013. 羅馬數字 -- NPSC 模擬試題 | From: [123.193.36.247] | 發表日期 : 2019-04-27 19:31

如題,本題我挖出來第六測資是V I,答案應該是IV,我自己測試跑出來也是IV,但是送出答案系統跑出的結果卻變成VI,實在不懂為什麼跑出來會不一樣
附上我的程式碼:

#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;

int num(char a){
switch(a){
case 'I':
return 1;
break;
case 'V':
return 5;
break;
case 'X':
return 10;
break;
case 'L':
return 50;
break;
case 'C':
return 100;
break;
case 'D':
return 500;
break;
case 'M':
return 1000;
break;
}
}

int main(){
char a[16] , b[16];
int line = 1;
while(cin>>a>>b){
//if(line == 6) cout<<a<<" "<<b<<endl;
int na = 0 , nb = 0 , n = 0;

//rome to number
for(int i=0 ; i<strlen(a) ; i++){
if(num(a[i]) < num(a[i+1])) na -= num(a[i]);
else na += num(a[i]);
}
for(int i=0 ; i<strlen(b) ; i++){
if(num(b[i]) < num(b[i+1])) nb -= num(b[i]);
else nb += num(b[i]);
}

n = abs(na - nb);
if(n == 0) cout<<"ZERO\n";

//千位數
for(int i=0 ; i<n/1000 ; i++) cout<<'M';
n %= 1000;

//百位數
if(n >= 900){
cout<<"CM";
n -= 900;
}
else if(n >= 500){
cout<<'D';
n -= 500;
}
if(n >= 400){
cout<<"CD";
n -= 400;
}
else {
for(int i=0 ; i<(n-n%100)/100 ; i++) cout<<'C';
n %= 100;
}

//十位數
if(n >= 90){
cout<<"XC";
n -= 90;
}
else if(n >= 50){
cout<<'L';
n -= 50;
}
if(n >= 40){
cout<<"XL";
n -= 40;
}
else{
for(int i=0 ; i<(n-n%10)/10 ; i++) cout<<'X';
n %= 10;
}

//個位數
if(n == 9){
cout<<"IX";
n -= 9;
}
else if(n >= 5){
cout<<'V';
n -= 5;
}
if(n == 4) cout<<"IV";
else for(int i=0 ; i<n ; i++) cout<<'I';

cout<<endl;
line++;
}
return 0;
}
 
ZeroJudge Forum