作者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