站外题求解
  • 板块学术版
  • 楼主suyi1111
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/29 18:54
  • 上次更新2024/4/29 20:41:06
查看原帖
站外题求解
711031
suyi1111楼主2024/4/29 18:54

题面如下:

【源文件命名:drink.cpp】
小X和小L很喜欢喝酒,有一天他们在地上把N(1 <= N <= 10^5)个箱子摆成了一个环形,第i个箱子内初始有ai(1 <= ai <= 5 * 10 ^ 6)瓶啤酒。游戏玩法如下:

1.他们两个人总是选择同一个箱子的啤酒喝,两个人轮流喝,每次都是L先喝,两个人在游戏开始时从第一个箱子开始喝。

2.如果当前在喝的箱子中啤酒的数量为0,那么此时轮到的那个人即为失败,也就是谁喝到箱子中的最后一瓶酒就胜利了。否则,轮到的那个人选择一个整数P,P可以是1或者是一个不超过当前箱子中啤酒数量的质数,然后从箱子中拿走P瓶啤酒喝掉。

3.两个人都从一个箱子中拿过啤酒之后,走到下一个箱子前继续喝。也就是说,如果两个人在第i个箱子中都拿过啤酒了,那么就走到第i+1个箱子边上,除非他们在房间N,在这种情况下他们会移动到房间1。

当两个人都采用最优策略时,问谁能赢得游戏的胜利

输入格式
从文件 drink.in 中读入数据
输入包含T个子测试用例。输入的第一行包含T(1 <= T <= 1000)。下面时T个子测试用例。
每个子测试用例的第一行包含N,第二行包含a1,a2,...an。
输入保证所有N之和不超过2 * 10 ^ 5。
输出格式
输出到文件 drink.out 中
对于每一个子测试用例,输出游戏的胜者
输入样例
5
1
4
1
9
2
2 3
2
7 10
3
4 9 4
输出样例
X
L
L
L
X
限制
时间限制:1000 ms
内存限制:65536 KB
说明/提示
测试点2~4 满足N = 1
测试点1,2,5,~7 满足ai <= 1000
测试点8 ~ 20 没有额外限制

2024/4/29 18:54
加载中...