Codeforces 448D Multiplication Table(二分)
2016-07-26 21:32
323 查看
Multiplication TableTime Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d& %I64uSubmit StatusDescriptionBizon 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 onthe intersection of the i-th row and j-th column equals i·j (therows 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-thnumber you write out is called the k-th largest number.InputThe single line contains integers n, m and k(1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m).OutputPrint the k-th largest number in a n × m multiplication table.Sample InputInput
如图给出表格前n行,前m,列,求第k个数在1到n*m+1之间二分查找求出从小到大第k个数(这个题要注意不是第k大的数)对于每个数x,乘法表第i行都有min((m-1)/i,m)个数比x小,累加后与k比较即可#include<cstdio>#include<iostream>#include<algorithm>using namespace std;long long m,n,k;long long sum(long long m,long long n,long long k){long long sum=0;for(int i=1;i<=n;i++){sum+=min(k,(m-1)/i);}return sum;}int main(){while(~scanf("%lld%lld%lld",&n,&m,&k)){long long left=1,right=m*n+1;while(left<right){long long mid=(left+right)/2;if(sum(mid,n,m)<k)left=mid+1;elseright=mid;}printf("%lld\n",left-1);}return 0;}
2 2 2Output
2Input
2 3 4Output
3Input
1 10 5Output
5HintA 2 × 3 multiplication table looks like this:
1 2 32 4 6
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 |
3 | 6 | 9 | 12 | ||||||
4 | 8 | 12 | 16 | ||||||
5 | 10 | 15 | 20 | ||||||
6 | |||||||||
7 | |||||||||
8 | |||||||||
9 | |||||||||
10 |
相关文章推荐
- POJ 3258 River Hopscotch
- 文章标题
- linux基础命令
- Java 输入一个日期,判断是星期几
- 关于系统文件注册表丢失或损坏,windows无法加载的解决办法
- 数字之和排序,数据结构
- 【CodeForces】699C - Vacations(贪心)
- 解决数据库乱码问题
- 最近点对 HDU5721
- JMeter监控内存及CPU ——plugin插件监控被测系统资源方法
- java 基础知识——数据
- 数组问题练习
- Can you find it?<hdoj2141>
- Zabbix-3.0.3使用自带模板监控MySQL
- 十道海量数据处理面试题与十个方法大总结
- CSR1010定时器的使用
- 76.Which statement is true about a whole consistent database backup on a database running in ARCHIVE
- SOLARIS10系统开启telnet/FTP/更改主机名称/网卡IP地址
- history 命令详细解读
- hdu-5754 Life Winner Bo(博弈)