×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#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