标签:blog io os sp for on 2014 log bs
自己画图模拟一下,就会发现其实把每行的到mid小的数加起来是不是k,如果是k的话,那么直接就退出吗,如果不是的话继续二分搞起
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> 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<r){ num=0; m=(l+r)>>1; for(ll i=1;i<=a;i++){ num+=min(m/i,b); } if(num<k) l=m+1; else r=m; } printf("%I64d\n",r); }
标签:blog io os sp for on 2014 log bs
原文地址:http://blog.csdn.net/u013076044/article/details/41808791