X02day3
2025-07-28 19:59:05
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int n,a[1000010];
bool P(int n){
bool flag=true;
cin>>n;
if(n==1){
flag=false;
}else{
for (int i=2;i<=sqrt(n);i++){
if(n%i==0){
flag=false;
}
}
}return flag;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int l=1,r=n,mid,ans;
while(l<=r){
mid=(l+r)/2;
if(P(a[mid])){
ans=mid;
l=mid+1;
}else{
r=mid-1;
}
}cout<<ans;
}
#include<bits/stdc++.h>
using namespace std;
int n,b,a[500005];
bool check(int x){ //判断 每个投票箱的票数为x时,所有城市的人都投完票之后需要的投票箱的数量
int cnt = 0;
for(int i = 1;i <= n;i++){
cnt += (a[i] + x - 1) / x;
}
if(cnt <= b) return true;
return false;
}
int main(){
while(cin >> n >> b){
if(n == -1 && b == -1) break;
int l = 1,r = 0,ans,mid;
for(int i = 1;i <= n;i++){
cin >> a[i];
r = max(r,a[i]); //找到a数组的最大值
}
while(l <= r){
mid = (l + r) / 2;
if(check(mid)){
ans = mid;
r = mid - 1;
}else{
l = mid + 1;
}
}
cout << ans << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个