std::cout如何格式化输出?



std::cout是如何工作的?以下代码没有通过HackerEarth.com上某个问题的特定测试用例:

double n,a,b;
while(t--){
cin>>n>>a>>b;
long long x = round(b*n*1.0/(a+b));
cout<<((a*x*x) + b*(n-x)*(n-x))<<endl;
}

while,下面的语句传递它们:

double n,a,b;
while(t--){
cin>>n>>a>>b;
long long x = round(b*n*1.0/(a+b));
long long ans = (a*x*x) + b*(n-x)*(n-x);
cout<<ans<<endl;
}

为什么当我在变量中存储计算值时,只有测试用例通过?如果直接打印到控制台,值会改变吗?我是c++的新手。

输出格式" selected "通过cout(或任何std::ostream)取决于输出的类型(具体而言,它取决于该类型的operator<<的实现)。

让我们看看在这两种情况下都有哪些类型在起作用。

在第一个示例中,您输出的是double,因为abn是双精度体。尽管xlong long,但由于隐式转换,该表达式是双精度的。

在第二个示例中,输出的是long long,因为这是ans的类型。请注意,ans的计算可能会被截断,因为它是作为双精度体计算的(原因如上所述),但存储在long long中。

在不知道你正在谈论的测试用例的细节的情况下,输出的一个区别是双精度数可能以十进制形式输出(例如1.231.0),而long long(或任何整数类型)将以整数形式输出(注意:有方法可以改变这种行为,我在这里省略了)。

相关内容

  • 没有找到相关文章

最新更新