二分答案
根据i * j与假设的答案去比较,二分查找
看一次感觉会有一次的惊喜。
#include#include #include using namespace std; typedef long long ll; ll n,m,k; bool check(ll mid) { int j=m; ll sum=0; for(int i=1;i<=n;i++) { while(j&&1ll*i*j>mid) j--; sum+=j; } if(sum>=k) return true; return false; } int main() { cin>>n>>m>>k; ll l=1,r=1ll*n*m; while(l >1; if(check(mid)) r=mid; else l=mid+1; } cout< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)