小美的梯子
[题目链接](https://www.nowcoder.com/practice/bd5627c6d0c14951b8072830e26a041b)
思路
每个梯子的形状为 |=|,由左右各一个 | 和中间一个 = 组成。多个梯子排成一行时,相邻梯子可以共用 |,例如两个梯子为 |=|=|。
观察规律: 个梯子需要
个
| 和 个
=。设有 个
| 和 个
=,则:
|的约束:,即
=的约束:
因此答案为 。注意当
时无法构成任何梯子,答案为
。
复杂度分析
- 时间复杂度:
,只需一次读入和一次取最小值运算。
- 空间复杂度:
,仅使用常数个变量。
代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
long long a, b;
cin >> a >> b;
if (a < 2) {
cout << 0 << endl;
} else {
cout << min(a - 1, b) << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
if (a < 2) {
System.out.println(0);
} else {
System.out.println(Math.min(a - 1, b));
}
}
}

京公网安备 11010502036488号