这是我关于堆栈溢出的第一篇文章,所以如果我错过了规则,我会提前道歉。 我试着搜索一些帖子,但无法找到我要找的东西。
我正在尝试在Spotify上提交Reversed Binary problem但是它正在回复"错误答案"。我用C和C ++编写了这个问题,我能够验证很多输入的答案。似乎问题不在于程序的逻辑。该谜题指出"输入是从标准输入读取的。
我试过用:
然而,似乎都没有效果。
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;
答案 0 :(得分:2)
确定。你必须意识到,spotify似乎是一个自动机器人,它编译并运行你提交的代码。
首先,您通过提供“输入号码”提示来污染答案。机器人不会将其与真实答案分开。
其次,我看不出它是如何编译的。什么是推送(), pop(),顶部和堆栈代码?你想尝试使用std :: stack类吗?如果是这样,请检查您的使用方式。
另一方面,如果你没有使用std :: stack,而是使用你自己的一些自定义宏(未显示),那么我的赌注就是检查那些。
答案 1 :(得分:0)
从c ++读取stdin,并写入stdout:
#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
和cout
:
int main() {
main_io(std::cin, std::cout);
}
或者您可以使用stringstream
s:
#include <sstream>
#include <cassert>
int main() {
std::istringstream input("13");
std::ostringstream output;
main_io(input, output);
assert(output.str() == "11");
}
答案 2 :(得分:0)
你的流媒体(虽然越野车)工作正常 我用你的代码运行了代码,
int reverse_binary(int value)
{
if (value == 13) return 11;
return 1;
}
它必须在您自己的reverse_binary函数中。 你的实际问题是什么?