«Ошибка времени выполнения» в обращенных двоичных числах в Kattis - PullRequest
0 голосов
/ 18 февраля 2020

Этот код:

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
    string numberStr = argv[1];

    int nr = std::stoi(numberStr);
    int newNr = 0;

    while (nr != 0)
    {
        newNr = newNr << 1;

        if ((nr & 0x1) == 1)
        {
            newNr |= 0x1;
        }
        else
        {
            newNr |= 0x0;
        }

        nr = nr >> 1;
    }

    cout << newNr << endl;

    return 0;
}

Видимо, дает мне Ошибка времени выполнения в проблеме "Обратные двоичные числа". Ссылка: https://open.kattis.com/problems/reversebinary

Программа работает с примерами ввода, и я также пытался использовать другие числа и сам подсчитал двоичный файл. Все кажется правильным и, конечно, я использовал программу через CMD, и она проверяется.

Вопрос в том, почему она становится «Ошибка времени выполнения»?

1 Ответ

3 голосов
/ 18 февраля 2020

Вы неправильно поняли описание проблемы: когда авторы говорят

Ввод содержит одну строку с целым числом N

, они буквально означают «вход», а не msgstr "аргументы командной строки". Поэтому вам нужно переключиться на чтение stdin вместо принятия ввода через argv:

int nr;
cin >> nr;

Как только вы это сделаете, ваша заявка пройдет все тесты.

...