博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #256 (Div. 2) D. Multiplication Table 【二分】
阅读量:6331 次
发布时间:2019-06-22

本文共 1982 字,大约阅读时间需要 6 分钟。

 

time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Bizon the Champion isn't just charming, he also is very smart.

While some of us were learning the multiplication table, Bizon the Champion had fun in his own manner. Bizon the Champion painted ann × m multiplication table, where the element on the intersection of the i-th row and j-th column equals i·j (the rows and columns of the table are numbered starting from 1). Then he was asked: what number in the table is the k-th largest number? Bizon the Champion always answered correctly and immediately. Can you repeat his success?

Consider the given multiplication table. If you write out all n·m numbers from the table in the non-decreasing order, then the k-th number you write out is called the k-th largest number.

Input

The single line contains integers nm and k (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m).

Output

Print the k-th largest number in a n × m multiplication table.

Examples
input
2 2 2
output
2
input
2 3 4
output
3
input
1 10 5
output
5
Note

2 × 3 multiplication table looks like this:

1 2 32 4 6

如果直接进行搜索,时间复杂度是O(n*m),肯定会超时。利用在乘法表中,每一行的数字都是(1*m,2*m,3*m,……,n*m)(m是行号)这一特点对行进行二分,mid/m就是mid

在这行中的排名。通过对每行进行搜索,就可以知道mid在鼠标中的总排名。

#include 
#include
#include
using namespace std;long long t, n, m;bool judge(long long x) { long long cnt = 0; for (long long i = 1; i <= m; i++) { //注意x/i 大于n的情况 cnt += min(x/i, n); } return cnt >= t;}int main() { while (scanf("%lld%lld%lld", &n, &m, &t) != EOF) { long long lb = 1, ub = m*n; long long ans = 0; while (ub - lb >= 0) { long long mid = (lb + ub)>>1; if (judge(mid)) { ans = mid; ub = mid - 1; } else { lb = mid + 1; } } printf("%lld\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/cniwoq/p/6770910.html

你可能感兴趣的文章
struts2.1 struts.devMode BUG解决方案
查看>>
日本法院裁定三星诉苹果专利侵权案败诉
查看>>
Windows Server 2012R2 桌面体验问题直通车
查看>>
桌面支持--复印证件技巧
查看>>
Silverlight实用窍门系列:50.InkPresenter涂鸦板的基本使用,以及将效果保存为Png图片【附带源码实例】...
查看>>
MySQL数据库经典书籍share
查看>>
给出三个数,要求输出 最大的一个
查看>>
Linux系统中获取帮助的方法及Linux系统的哲学思想
查看>>
在windows环境创建,安装windows服务
查看>>
Nginx请求反向代理
查看>>
golang的GJSON库
查看>>
mybatis 中的<![CDATA[ ]]>
查看>>
Springboot配置文件读取报错Configuration property name 'projectUrl' is not valid:
查看>>
HTTP状态码
查看>>
今天的学习
查看>>
面试必问之JVM原理
查看>>
linux批量修改文件名大小写
查看>>
我的友情链接
查看>>
CSS预处理器-Sass
查看>>
mysql主主同步+Keepalived
查看>>