原题链接
吉首大学比赛题。因为要向上取整,用了ceil函数。
先介绍下ceil函数(取自百度百科)
函数名: ceil
用 法: double ceil(double x);
功 能: 返回大于或者等于指定表达式的最小整数
头文件:math.h
返回数据类型:double
WA了6发的原因就是ceil函数()内数据类型为double,之前一直用a[i]/x得到的整型数据,强制转换下就好了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[2000005];
int n,m,l=1,r=0;
bool check(int x)
{
int ans=0;
for(int i=1;i<=m;i++)
{
ans+=int(ceil(double(a[i])/x));
}
// printf("%d\n",ans);
return ans<=m;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
r=max(r,a[i]);
}
while(l<=r)
{
int mid=l+r>>1;
// printf("%d ",mid);
if(check(mid))
r=mid-1;
else
l=mid+1;
}
// printf("%d",l);
printf("%d",l);
return 0;
}
来源:CSDN
作者:zmny
链接:https://blog.csdn.net/pecoz/article/details/103847523