文章
8
粉丝
0
获赞
1
访问
1.6k
本题oj数据有误,
1 1000000000
1000000000
该样例满足"对 100% 的数据 1≤n≤10^5,1≤k≤10^9,1≤ai≤10^9",但是期望结果是1000000000000000000 (1e18),但是oj认为的ac代码实际结果是1000000000 (1e9)
这显然不对,因为他忽略了结果可能超出int的范围,这里带上ac代码
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
using namespace std;
void solve()
{
int n,k;
cin >>n>>k;
vector<int >a(n);
for (int i=0;i<n;i++)
{
cin >>a[i];
}
auto ok=[&](int x)->int
{
int res=0;
for (int i=0;i<n;i++)
{
if(a[i]==0) continue;
res+=x/a[i];
}
if(res>=k)return 1;
else return 0;
};
int ll=0;
int rr=1e18;
while (ll<rr)
{
int mid = ll + (rr - ll) / 2;
if(ok(mid))rr=mid;
else ll=mid+1;
}
cout <<ll<<endl;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
// int t;cin >&g...
登录后发布评论
感谢反馈,数据已更新~