CF2091D Place of the Olympiad
题目传送门
思路
这题很明显可以用二分答案。
每次检查以
AC Code:
#include <bits/stdc++.h>
using namespace std;
long long n,m;
long long k;
bool check(int x)
{
long long r=n*((m/(x+1)*x)+(m%(x+1)));
return r>=k;
}
void solve()
{
cin >>n>>m>>k;
long long l=1,r=m;
long long ans=0;
while(l<=r)
{
int mid=(l+r)/2;
if(check(mid))
{
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout <<ans<<'\n';
}
int main()
{
int t;
cin >>t;
while(t--)
{
solve();
}
return 0;
}