社区讨论
不懂代码,求解释
题目总版参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m4s15eb6
- 此快照首次捕获于
- 2024/12/17 13:35 去年
- 此快照最后确认于
- 2025/11/04 12:43 4 个月前
题目描述
经过多番苦战,小K成功闯入了魔王LX的城堡。魔王LX被逼无奈,放出了他的秘密武器:赛博人克隆军团。
赛博人军团组成了大小为 的一个矩阵队列,其中位置 的赛博人士兵战斗力为 (下标从 1 开始)。
决战前,小K 望着面前的大军陷入了沉思。他想知道,在整个矩阵军团中,战斗力第 小的士兵的战斗力是多少。
输入
- 三个整数 ,表示矩阵的行数、列数以及第 小的士兵编号。,
输出
- 一个整数,表示战斗力第 小的士兵的战力值。 样例输入 Copy 3 3 5 样例输出 Copy 3 提示
样例解释
- 对于输入样例 1,矩阵军团如下:
CPP
战斗力从小到大排列:,所以第 5 小的战斗力是 。1 2 3 2 4 6 3 6 9
输入样例2
2 3 6
输出样例2
6
- 对于输入样例 2,矩阵军团如下:
CPP
战斗力从小到大排列:,所以第 6 小的战斗力是 。1 2 3 2 4 6
代码的for循环部分不明白什么意思,求大佬解释
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int main(){
cin>>n>>m>>k;
long long l=1,r=n*m;
while(l<r)
{
long long p=0,mid=(l+r)/2;
for(int i=1;i<=n;i++)
{
long long j=mid/i;
if(j>m) p+=m;
else p+=j;
}
if(p>=k) r=mid;
else l=mid+1;
}
cout<<r;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...