【发布时间】:2016-02-15 10:37:03
【问题描述】:
如何在这段代码中避免截断整数除法?我的排序数组是1 1 1 1 1 1,所以 a[0] = 1 和 a[n] 应该是 1 / 2 = 0.5。
int main()
{
long long n,w;
scanf("%lld %lld", &n, &w);
long long arr[2*n];
for(long long i = 0; i < 2 * n; i++)
{
scanf("%lld", &arr[i]);
}
sort(arr,arr+2*n);
long long a = arr[0];
long long b = (float)(arr[n]/2); // <--- this part of code
cout << " a is " << a << endl;
cout << " b is " << b << endl;
long long m = min(a,b);
cout << " m is " << m << endl;
long long and = min(m * n + m * 2LL * n, w);
printf("%lld", ans);
return 0;
}
【问题讨论】:
-
C 还是 C++?它们是不同的语言。
-
帖子不是有效的 C 代码。
-
long long到float的转换肯定会丢失大值的精度。