我的代码检查问题CIELAB解决方案出了什么问题

时间:2019-04-27 10:18:47

标签: c++

我正在按简单类别进行代码厨师实践问题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;
} 

谢谢。

1 个答案:

答案 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;
}