如何解决n/2 和 n-(n/2) 工作正常,但 C++ 中的 Ceil 和 Floor 函数给出错误答案
我在 Codechef 上解决“硬币翻转”问题(问题代码:CONFLIP)并遇到了这个问题。
我的第一个程序提交成功,而在第二个程序中,我在提交时收到“错误答案”状态。谁能告诉为什么第二个程序是错误的?
注意:没有没有编译错误,第二个程序也在可见测试用例和我自己测试过的许多其他测试用例上给出正确的输出,但在提交时,我收到“错误答案”状态.两个程序的逻辑是一样的。所有的头文件都被正确包含,只是为了干净的外观这里没有提到。 [使用 C++14(GCC 6.3) 编译]
第一个程序:-
int main()
{
int t,g,n,i,q;
cin>>t;
while(t--)
{
cin>>g;
while(g--)
{
cin>>i>>n>>q;
if(i!=q)
{
cout<<n-(n/2)<<endl; //This line is different in both the programs.
}
else
{
cout<<n/2<<endl; //This line is different in both the programs.
}
}
}
return 0;
}
第二个程序:-
int main()
{
int t,q;
cin>>t;
while(t--)
{
cin>>g;
while(g--)
{
cin>>i>>n>>q;
if(i!=q)
{
cout<<ceil(float(n)/float(2))<<endl; //This line is different in both the programs.
}
else
{
cout<<floor(float(n)/float(2))<<endl; //This line is different in both the programs.
}
}
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。