我正在按简单类别进行代码厨师实践问题https://www.codechef.com/problems/CIELAB。但是我的解决方案不起作用。提交屏幕显示:状态错误答案
#include <iostream>
using namespace std;
int input ();
int difference (int, int);
int calculateWrongAns (int);
int main()
{
int num1;
int num2;
num1 = input();
num2 = input();
int actualAns = difference(num1, num2);
int res = calculateWrongAns(actualAns);
cout << res;
return 0;
}
int input () {
int x;
cin >> x;
return x;
}
int difference (int x, int y) {
if (x > y) {
return x - y;
} else if (x < y) {
return y - x;
} else {
return 0;
}
}
int calculateWrongAns (int actualAns) {
int lastNumber = actualAns % 10;
int otherNumbers = actualAns / 10;
int res;
if (otherNumbers != 0) {
res = (otherNumbers * 10) + (lastNumber == 1 ? 2 : lastNumber - 1);
} else {
res = lastNumber == 1 ? 2 : lastNumber - 1;
}
return res;
}
谢谢。
答案 0 :(得分:0)
行
res = lastNumber == 1 ? 2 : lastNumber - 1;
是错误的。您正在将结果拆分为最后一位和其他位。如果最后一位是1,则将其更改为2。如果不是1,则将减去1。这意味着,如果结果为30,则将减去1。新结果为29。两位数字不同。那是不对的。您可以使用
int calculateWrongAns (int actualAns) {
return (actualAns % 10) == 0 ? actualAns + 1 : actualAns - 1;
}