0

这是我关于堆栈溢出的第一篇文章,所以如果我错过了一条规则,我提前道歉。我试图搜索一些帖子,但找不到我要找的东西。

我正在尝试在 Spotify 上提交Reversed Binary 问题,但它给出的答复是“错误答案”。我已经用 C 和 C++ 对问题进行了编码,并且能够验证大量输入的答案。问题似乎不在于程序的逻辑。谜题指出“输入是从标准输入读取的”。

我曾尝试使用:

  1. C:printf、scanf函数
  2. C++:cout 和 cin 函数(并在顶部写“使用命名空间 std”)
  3. C++:直接使用 std::cout 和 std::cin 函数。

然而,似乎没有一个工作。

int stack[32];
top=-1
long inputNum,outputNum=0;
cout<<"Enter a Number\n";
cin>>inputNum;
while(inputNum>1) {
    if(inputNum%2 == 0) {
        push(0);
        inputNum=inputNum/2;
    } else if(inputNum%2 == 1) {
        push(1);
        inputNum=inputNum/2;
    }
}
push(1);
int i=0,x=0;
while(top>-1) {
    x=pop();
    if(x==0) {
        i++;
        continue;
    } else if(x==1) {
        outputNum=outputNum+powl(2,i);
        i++;
    }
}
cout<<outputNum;
4

3 回答 3

2

好的。您必须意识到,spotify 似乎是一个自动机器人,可以编译和运行您提交的代码。

因此,首先,您通过提供“输入数字”提示来污染答案。机器人不会将其与真正的答案分开。

其次,我看不到它是如何编译的。这是什么push()pop()topstack代码?您是否尝试使用 std::stack 类?如果是这样,请检查您的使用方式。

另一方面,如果您不使用 std::stack,而是使用您自己的一些自定义宏(未显示),那么我敢打赌检查这些。

于 2013-03-15T12:42:52.450 回答
0

您的流媒体(虽然有问题)工作正常。
我运行你的代码,

int reverse_binary(int value)
{
  if (value == 13) return 11;
  return 1;
}

它必须在您自己的 reverse_binary 函数中。你的实际问题是什么?

于 2013-03-15T06:36:09.157 回答
0

在 C++ 中从标准输入读取,并写入标准输出:

#include <iostream>

int main() {
    unsigned int value;
    std::cin >> value;
    std::cout << reverse_binary(value);
}

你只需要实现reverse_binary(c:

您可以将其提取到适用于任何流的函数中:

void main_io(std::istream& input, std::ostream& ouput) {
    unsigned int value;
    input >> value;
    output << reverse_binary(value);
}

cin并使用and调用它cout

int main() {
    main_io(std::cin, std::cout);
}

或者您可以使用stringstreams 对其进行测试:

#include <sstream>
#include <cassert>

int main() {
    std::istringstream input("13");
    std::ostringstream output;

    main_io(input, output);

    assert(output.str() == "11");
}
于 2013-03-15T00:21:13.753 回答