自己畫圖模擬一下,就會發現其實把每行的到mid小的數加起來是不是k,如果是k的話,那麼直接就退出嗎,如果不是的話繼續二分搞起
#include#include #include #include using namespace std; typedef long long int ll; int main(){ ll l,r; ll a,b; ll m; ll num; ll k; scanf("%I64d%I64d%I64d",&a,&b,&k); l=1; r=a*b; while(l >1; for(ll i=1;i<=a;i++){ num+=min(m/i,b); } if(num