CodeForces 448D Multiplication Table (二分 )
2016-07-27 17:06
281 查看
K - Multiplication Table
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
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 n, m and k (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m).
Output
Print the k-th largest number in a n × m multiplication table.
Sample Input
Input
Output
Input
Output
Input
Output
Hint
A 2 × 3 multiplication table looks like this:
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
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 n, m and k (1 ≤ n, m ≤ 5·105; 1 ≤ k ≤ n·m).
Output
Print the k-th largest number in a n × m multiplication table.
Sample Input
Input
2 2 2
Output
2
Input
2 3 4
Output
3
Input
1 10 5
Output
5
Hint
A 2 × 3 multiplication table looks like this:
1 2 32 4 6
解题思路:
这道题刚开始题意就理解错了。。。。。。最主要的还是找一个数(mid)是排序后的第几几个数;然后二分和k比较;
#include <cstdio> #include <cstring> #include<cstdio> #include<math.h> #include<algorithm> using namespace std; long long n,m,k; bool ck(long long x) { long long nt=0; for(long long i=1;i<=n;i++) { nt+=min(m,x/i); } if(nt>=k) return true; return false; } int main() { while(scanf("%lld%lld%lld",&n,&m,&k)!=EOF) { long long low=1,high=n*m,ans=-1,mid; while(low<=high) { mid=(low+high)/2; if(ck(mid)) { ans=mid; high=mid-1; } else low=mid+1; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- oracle分页查询数据重复问题
- 官方 eclipse 在线安装 MyBatis Generator
- 初学android-简单的图灵机器人
- Redis 使用场景-电商
- Redis实现简单的消息队列
- Android.mk文件语法规范及使用模板
- VB,VBS,VBA,ASP可引用的库参考
- 08-掌握-GCD线程间通信
- 关于NFC芯片选择的一些记录
- 计算机网络面试相关
- 在windows下使用VirtualEnv
- 败者树
- Npm install failed “cannot run in wd”
- 网线
- 10036---深入浅出JMS(二)--ActiveMQ简单介绍以及安装
- 对过度自信的矫正
- 神秘的 shadow-dom 浅析
- Error:C:\Users\lqm\.gradle\caches\2.10\scripts\ijinit34_7wu3ex74z3a8e98fc8d35fuid\cp_init\cache.prop
- Fence Repair(优先队列) POJ 3253
- C#+Arcgis Engine开发-点选查询