是什么导致此代码中的运行时错误

What causes a runtime error in this code

我正在研究 UVA 问题 12468 Zapping

我已经检查了几个测试用例并且它成功运行但是当我将这个解决方案提交给 UVA 在线判断时它判断它为运行时错误。错误在哪里?请解释你的答案。

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a,b,next,bk;

    while(true)
    {
        cin >> a >> b;
        if (a == -1 && b == -1)
            break;

        next = abs(a - b);

        if (next > 50)
        {
            bk = (a % b) + 1;

            cout << bk << endl;
        }
        else
        {
            cout << next << endl;
        }
    }

    return 0;
}

你的问题本质上是"how can the following code cause a run time error"。该问题的答案由 πìντα ῥεῖ 给出,当变量 b 等于零时,它发生在行 (a%b)+1 上。

但如果实际问题是 "how to change the code so that it gives the correct output according to problem 12468 description" 那么答案应该是用以下内容替换该行:

bk = 100 - next;

因此,如果在一个方向上切换遥控器所需的时间超过最大值的一半,这会告诉您在相反方向上切换遥控器需要多少时间。