问一个问题
  • 板块灌水区
  • 楼主Danny_chan
  • 当前回复4
  • 已保存回复5
  • 发布时间2024/3/30 14:19
  • 上次更新2024/3/30 16:22:43
查看原帖
问一个问题
1032960
Danny_chan楼主2024/3/30 14:19

b3881

#include<iostream>
using namespace std;
long long n,k,p,s[1000010];
bool f(int x){
	int sum=s[1],m=1;
	for(int i=2;i<=k;i++){
		if(sum+x<=s[i]){
			sum=s[i];
			m++;
		}
	}
	//cout<<n<<" "<<m<<endl;
	return (m>=n);
}
signed main(){
	cin>>n>>k>>p;
	s[1]=p;
	for(int i=2;i<=k;i++){ 
		s[i]=s[i-1]+((s[i-1]*2357+137)%10)+1;
		//cout<<s[i]<<" ";
	}
	int l=1,r=1e10,mid;
	while(l<r){
		mid=(l+r+1)/2;
		//cout<<l<<" "<<mid<<" "<<r<<endl;
		if(f(mid)){
			l=mid;
		}else{
			r=mid-1;
		}
	}	
	cout<<l;
	
	
	
	return 0;
}

为什么最后输出l就是正确结果

2024/3/30 14:19
加载中...