- 工厂机器
不对,85分!!!!!!
- @ 2026-5-20 13:54:41
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[200005],r=1e17+1,l=0,k;
signed main(){
cin>>n>>k;
for(int i = 1;i<=n;i++){
scanf("%lld",&a[i]);
}
while(l+1<r){
int mid=(l+r)/2;
int s=0;
for(int i = 1;i<=n;i++){
s=s+mid/a[i];
}
if(s>=k) r=mid;
else l=mid;
}
cout<<r;
return 0;
}
2 条评论
-
zhaozhiyi LV 6 @ 2026-5-21 14:52:39
#include <bits/stdc++.h> #define int long long using namespace std; int a[200005]; int n,t; int check(int x){ int sum=0; for(int i=1;i<=n;i++){ sum=sum+(x/a[i]); if(sum>=t)return true; } if(sum>=t)return true; else return false; } signed main (){ cin>>n>>t; for(int i=1;i<=n;i++){ cin>>a[i]; } int l=0; int r=1e17+1; while(l+1<r){ int mid=(l+r)/2; if(check(mid)){ r=mid; }else{ l=mid; } } cout<<r; return 0; 95分???
-
@ 2026-5-21 0:42:07#include<bits/stdc++.h> #define int long long using namespace std; int n, a[200005], r = 1e18 + 10, l = 0, k; signed main(){ scanf("%lld%lld", &n, &k); for(int i = 1; i <= n; i++){ scanf("%lld", &a[i]); } while(l + 1 < r){ int mid = (l + r) / 2; int s = 0; for(int i = 1; i <= n; i++){ s += mid / a[i]; if(s >= k) break; // 提前退出,防止溢出 } if(s >= k) r = mid; else l = mid; } cout << r; return 0; }
- 1
信息
- ID
- 192
- 时间
- ms
- 内存
- MiB
- 难度
- 3
- 标签
- 递交数
- 42
- 已通过
- 10
- 上传者