1.练习项目:
输入描述
输入三个数字 n,m,k,每个数字的意义和问题描述中相同。
输入保证 1≤n,m≤5×10的5次方,1≤k≤n×m。
输出描述
输出一个数字表示第 k 大的元素。
2.选择课程
在蓝桥云课中选择题库,选择题号3404并开始练习。
3.开始练习
(1)源码:
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll n,m,k;
ll rnk(ll mid)
{
ll res=0;
for(int i=1;i<=n;i++){
res+=min(m,mid/i);
}
return res;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m>>k;
ll l=0,r=1e14;
while(l+1!=r){
ll mid=(l+r)/2;
if(rnk(mid)>=k){
r=mid;
}else{
l=mid;
}
}
cout<<r;
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。