cf.256.div2.D
2014-07-19 11:11
381 查看
D. Multiplication Table
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 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 test(s)
input
output
input
output
input
output
Note
A 2 × 3 multiplication table looks like this:
题意:提供一个n*m的乘法表,输出其中第k大的数
题目链接
挑来挑去就选了这道字比较少的题...,
比赛时想:暴力肯定不行,于是找规律,也没什么进展,最后一次都没提交.....,挺失败的
隔了两天看到tags写着 binary search 就试着写了写
小于等于s有多少个数,可以这样求:
typedef long long ll;
ll ans = 0;
for(int i = 1; i <= n; i++)
ans += Min(s, m * i) / i;
蛮好想的
就是二分啊....每次写的都是生不如死,下次再碰到就照着改好了
哦对,还有就是要用 long long 储存答案,又多错了一次...,这也算是cf的特色了吧,hah
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 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 test(s)
input
2 2 2
output
2
input
2 3 4
output
3
input
1 10 5
output
5
Note
A 2 × 3 multiplication table looks like this:
1 2 32 4 6
题意:提供一个n*m的乘法表,输出其中第k大的数
题目链接
挑来挑去就选了这道字比较少的题...,
比赛时想:暴力肯定不行,于是找规律,也没什么进展,最后一次都没提交.....,挺失败的
隔了两天看到tags写着 binary search 就试着写了写
小于等于s有多少个数,可以这样求:
typedef long long ll;
ll ans = 0;
for(int i = 1; i <= n; i++)
ans += Min(s, m * i) / i;
蛮好想的
就是二分啊....每次写的都是生不如死,下次再碰到就照着改好了
#include <iostream> #include <cstdio> using namespace std; #define Min(a,b) (a>b?b:a) typedef long long ll; ll n, m, k; ll cal(ll s) { ll ans = 0; for(int i = 1; i <= n; i++) ans += Min(s, m * i) / i; return ans; } int main() { cin >> n >> m >> k; ll l, r; l = 1, r = n * m; while(l <= r) { ll m = (l + r) >> 1; ll tmp = cal(m); if( k <= tmp ) r = m - 1; else l = m + 1; } cout << l << endl; system("pause"); return 0; }
哦对,还有就是要用 long long 储存答案,又多错了一次...,这也算是cf的特色了吧,hah
相关文章推荐
- Search Engine XSS Worm
- 向大家推荐一个收集整理正则表达式的网站
- Js&Vbs正则表达式替换重复的字符
- 限制文本框中只能输入实数或整数,其它字符无效,有劳大家了!
- 关于IE的RegExp.exec的问题
- Google Map Api和GOOGLE Search Api整合实现代码
- javascript中的window.location.search方法简介
- Microsoft Search 服务无法启动 解决办法.
- MYSQL的binary解决mysql数据大小写敏感问题的方法
- 正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
- 正则基础之 环视 Lookaround
- JScript中正则表达函数的说明与应用
- 介绍一个rails 有关的gem: rails-simple-search 3ff8
- grub rescue模式下修复
- oracle decode function
- grep技巧 转载
- Linux ACL 学习笔记
- SQL Server 2008 全文搜索的一些知识
- 爱普生epson7440的 报错0001002dD错误代码-清零ADJ解决
- MySQL IFNULL()函数用法