某公司年会上,组织人员安排了一个小游戏来调节气氛。游戏规则如下:
N个人参与游戏,站成一排来抢工作人抛来的M个小玩偶。为了增加游戏的趣味和难度,规则规定,参与游戏的人抢到的礼物不能比左右两边的人多两个或以上,否则会受到一定的惩罚。游戏结束时拥有玩偶最多的人将获得一份大奖。
假设大家都想赢得这份大奖,请问站在第K个位置的小招在赢得游戏时,最多能拥有几个玩偶?
某公司年会上,组织人员安排了一个小游戏来调节气氛。游戏规则如下:
输入为用空格分隔的3个正整数,依次为:参与游戏人数N、玩偶数M、小招所在位置K
输出为1个正整数,代表小招最多能够拥有的玩偶数。若没有,则输出0。
1 1 0
0
1 3 1
3
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while (in.hasNext()){ int N = in.nextInt(); int M = in.nextInt(); int K = in.nextInt(); System.out.println(getMax(N,M,K)); } } public static int getMax(int N,int M,int K){ if(N<=0 || M<=0 || K<=0 ||K>N) return 0; int sum =0 ; int max = 0; if(N==2 && M==2) return 1; while(sum<M){ max+=1; sum = (max-K+1+max)*K/2+(max+max-(N-K+1)+1)*(N-K+1)/2-max; if(sum==M){return max;} } return max-1; } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int k = sc.nextInt(); if(m==0 || n==0 || kn){ System.out.println(0); return; } System.out.println((m + (k*(k-1)/2) + ((n-k+1)*(n-k)/2))/n); } }