作者darklady (Sylvanas)
看板C_and_CPP
標題[ACM ] ZeroJudge a013
時間Sat Feb 21 00:29:02 2009
http://cat.nknush.kh.edu.tw/ZeroJudge/ShowProblem?problemid=a013
可以用帳號guest,pw guest測試
這個題目我解出來,自己測試都沒問題,
但是丟上去都會WA
與正確輸出不相符(line:8)
您的答案為: XXVIII
正確答案為: XVIII
可以麻煩各位幫我看一下程式碼嗎?
http://src.wtgstudio.com/?5g5p41
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main()
{
int I =
1, V =
5, X =
10, L =
50, C =
100, D =
500, M =
1000;
int sum =
0, temp =
0, result =
0;
string input;
while(getline(cin, input))
{
//cout << "debug ... input = " << input << endl;
//cout << "debug ... input.size() = " << input.size() << endl;
for(
int j = input.size()-
1; j != -
1; --j)
{
if(input[j] ==
'#')
return 0;
if(input[j] ==
' ')
{
temp = sum;
sum =
0;
//cout << "debug ... temp = " << temp << endl;
}
if(input[j] ==
'I')
{
if(input[j+
1] ==
'V')
;
else if (input[j+
1] ==
'X')
;
else
sum +=
1;
}
if(input[j] ==
'V')
{
if(input[j-
1] ==
'I')
sum +=
4;
else
sum +=
5;
}
if(input[j] ==
'X')
{
if(input[j-
1] ==
'I')
sum +=
9;
if(input[j+
1] ==
'C')
;
else
sum +=
10;
}
if(input[j] ==
'L')
{
if(input[j-
1] ==
'X')
sum +=
40;
else
sum +=
50;
}
if(input[j] ==
'C')
{
if(input[j-
1] ==
'X')
sum +=
90;
else if(input[j+
1] ==
'M')
;
else if(input[j+
1] ==
'D')
;
else
sum +=
100;
}
if(input[j] ==
'D')
{
if(input[j-
1] ==
'C')
sum +=
400;
else
sum +=
500;
}
if(input[j] ==
'M')
{
if(input[j-
1] ==
'C')
sum +=
900;
else
sum +=
1000;
}
}
//cout << "debug ... sum = " << sum << endl;
//cout << "debug ... sum-temp = " << sum-temp << endl;
result = abs(sum-temp);
sum =
0;
if(result ==
0)
{
cout <<
"ZERO" << endl;
continue;
}
if(result/
1000)
{
switch(result/
1000)
{
case 1: cout <<
"M";
break;
case 2: cout <<
"MM";
break;
case 3: cout <<
"MMM";
break;
}
result = result%
1000;
if(result ==
0)
cout << endl;
//cout << "\ndebug ... result%1000 = " << result << endl;
}
if(result/
900)
{
cout <<
"CM";
result = result%
900;
//cout << "\ndebug ... result%900 = " << result << endl;
if(result ==
0)
cout << endl;
}
if(result/
500)
{
cout <<
"D";
result = result%
500;
//cout << "\ndebug ... result%500 = " << result << endl;
if(result ==
0)
cout << endl;
}
if(result/
400)
{
cout <<
"CD";
result = result%
400;
if(result ==
0)
cout << endl;
}
if(result/
100)
{
switch(result/
100)
{
case 1: cout <<
"C";
break;
case 2: cout <<
"CC";
break;
case 3: cout <<
"CCC";
break;
}
result = result%
100;
//cout << "\ndebug ... result%100 = " << result << endl;
if(result ==
0)
cout << endl;
}
if(result/
90)
{
cout <<
"XC";
result = result%
90;
if(result ==
0)
cout << endl;
}
if(result/
50)
{
cout <<
"L";
result = result%
50;
if(result ==
0)
cout << endl;
}
if(result/
40)
{
cout <<
"XL";
result = result%
40;
if(result ==
0)
cout << endl;
}
if(result/
10)
{
switch(result/
10)
{
case 1: cout <<
"X";
break;
case 2: cout <<
"XX";
break;
case 3: cout <<
"XXX";
break;
}
result = result%
10;
//cout << "\ndebug ... result%10 = " << result << endl;
if(result ==
0)
cout << endl;
}
if(result/
9)
{
cout <<
"IX";
result = result%
9;
if(result ==
0)
cout << endl;
}
if(result/
5)
{
cout <<
"V";
result = result%
5;
if(result ==
0)
cout << endl;
}
if(result/
4)
{
cout <<
"IV";
result = result%
4;
if(result ==
0)
cout << endl;
}
if(result/
1)
{
switch(result/
1)
{
case 1: cout <<
"I";
break;
case 2: cout <<
"II";
break;
case 3: cout <<
"III";
break;
}
result = result%
1;
//cout << "\ndebug ... result%1 = " << result << endl;
cout << endl;
}
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.161.221.10
※ 編輯: darklady 來自: 118.161.221.10 (02/21 00:31)
※ 編輯: darklady 來自: 118.161.221.10 (02/21 00:32)
1F:→ VictorTom:太強了, BBS自己上color, 幫您推一下:) 02/21 18:15
2F:→ zlw:會不會是有人寫出BBS程式碼上色工具了... 02/21 18:32
3F:→ hpo14:不是已經有人寫出來過了嗎... 02/22 01:32
5F:→ bibo9901:這是vim的配色吧XD 02/22 10:48