关于刚才B题
查看原帖
关于刚才B题
482610
Mortidesperatslav楼主2023/7/30 18:10

rt,我二分做了 40pts40pts,求正解。

#include<bits/stdc++.h>
using namespace std;
int n,l,r,x[1000005];
int check(int p){
	int sum=0;
	for(register int i=1;i<=n;i++){
		sum+=p/x[i];
	}
	return sum;
}
int main(){
	cin>>n>>l>>r;
	for(register int i=1;i<=n;i++)cin>>x[i];
	if(n==1){
		int ans=0;
		for(register int i=l;i<=r;i++){
			ans++;
		}
		cout<<ans;
	}else{
		int res=0;
		for(register int i=l;i<=r;i++){
			int le=1,ri=1000000000,ans=-1;
			while(le<=ri){
				int mid=(le+ri)>>1;
				if(check(mid)<i)le=mid+1;
				else if(check(mid)>i)ri=mid-1;
				else{
					ans=mid;
					break;
				}
			}
			if(ans!=-1)res++;
		}
		cout<<res;
	}
}
2023/7/30 18:10
加载中...