所以,我正在解决一个基本上具有以下代码的问题:
int rez,arr[10000],n,l,diff;
float f;
int main (void)
{
cin>>n>>l;
for (int i = 0; i < n; i++ )
{
cin>>arr[i];
}
sort(arr,arr+n);
rez = 2*max(arr[0],l-arr[n-1]);
for ( int i = 0; i < n-1; i++ )
{
rez = max(rez, arr[i+1]-arr[i]);
}
f = rez/2.0;
printf("%.10f\n",f);
return 0;
}
上面是下面问题的代码:
http://codeforces.com/problemset/problem/492/B
逻辑:按非降序对灯笼进行排序。然后我们需要找到两个相邻灯笼之间的最大距离,让它成为 maxdist。我们还需要考虑街道边界并计算从外面的灯笼到街道边界的距离,它将是 (a[0] - 0) 和 (l - a[n -⟉1])。答案将是 max(maxdist/2, max(a[0] - 0, l - a[n - 1]))
现在,上面的代码给出了一个 WA(错误答案),但是将最后一个语句修改为,
printf("%.10f\n",rez/2.);
(并删除 f),我被接受了。这个 .
是什么意思,为什么当我使用额外的变量 f
时它会给出 WA?
最佳答案
.
的含义如下-
让我们举个例子 int a=4; float c;
如果我们写c=a/3;
那么printf("%f",c);
会得到1.000000
(精确到小数点后六位),如果你写printf("%.10f",c);
那么它会给出1.0000000000
(精确到小数点后十位),这意味着在 printf 中写入 .
将给出精确到 之后写入的数字的有效数字。
如果我们写入 c=a/3.0
这意味着我们告诉编译器将 int 除以 float
并在此处进行隐式转换(或类型提升),编译器将 int a 视为 float
并给出输出 1.333333
。因此,我们可以通过这样做获得精确的答案,直到所需的有效数字。
关于c++ - '.' 在输出中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547390/