Online Judge【CodeForces】[448D]Multiplication Table问题描述Multiplication Table[codeforces-448D] [3192446154889684] @vjudge问题分析每一行比x大的数有x/i个所以可以进行统计从而进行二分查找找到第k大(大于等于它的有k个)的元素 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include<stdio.h> #include<algorithm> using namespace std; __int64 n,m,k; bool find(__int64 x) { __int64 cnt=0; for(int i=1; i<=n; i++) { cnt+=min(m,x/i); } return cnt>=k; } int main() { while(scanf("%I64d %I64d %I64d",&n,&m,&k)!=EOF) { __int64 l=1,r=n*m,res; while(l<=r) { __int64 mid=(r+l)/2; if(find(mid)) { res=mid; r=mid-1; } else l=mid+1; } printf("%I64d\n",res); } return 0; }