描述
某公司年会上,组织人员安排了一个小游戏来调节气氛。游戏规则如下:
N个人参与游戏,站成一排来抢工作人抛来的M个小玩偶。为了增加游戏的趣味和难度,规则规定,参与游戏的人抢到的礼物不能比左右两边的人多两个或以上,否则会受到一定的惩罚。游戏结束时拥有玩偶最多的人将获得一份大奖。
假设大家都想赢得这份大奖,请问站在第K个位置的小招在赢得游戏时,最多能拥有几个玩偶?
输入描述:
输入为用空格分隔的3个正整数,依次为:参与游戏人数N、玩偶数M、小招所在位置K
输出描述:
输出为1个正整数,代表小招最多能够拥有的玩偶数。若没有,则输出0。
示例1
输入:
1 1 0
输出:
0
示例2
输入:
1 3 1
输出:
3
解题思路:
根据题目要求,小招抢到的礼物不能比左右两边的人多两个或以上,否则会受到惩罚。因此,我们可以先计算出小招左边和右边的人可以抢到的最大玩偶数。
假设小招左边有 L 个人,右边有 R 个人,则小招左边的人可以抢到的最大玩偶数为 M - 2L,右边的人可以抢到的最大玩偶数为 M - 2R。因此,小招可以抢到的最大玩偶数为 M - 2L + M - 2R = M - 2(L + R)。
但是,如果小招左边或右边的人抢到的玩偶数已经超过了 M - 2,那么小招就无法抢到玩偶了。因此,我们需要根据 L 和 R 的值来计算小招可以抢到的最大玩偶数。
具体来说,如果 L + R >= N - 1,则小招无法抢到玩偶,输出 0。如果 L + R < N - 1,则小招可以抢到的最大玩偶数为 M - 2(L + R)。
Java代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int k = scanner.nextInt();
int l = k;
int r = n - k - 1;
if (l + r >= n - 1) {
System.out.println(0);
} else {
int max = m - 2 * (l + r);
System.out.println(max);
}
}
}
```