ny788 又见Alice and Bob
又见Alice and Bob
- 描述
-
集训生活如此乏味,于是Alice和Bob发明了一个新游戏。规则如下:首先,他们得到一个集合包含n个特定的整数,接着他们轮流做以下操作,每一次操作,Alice或者Bob(轮到谁就是谁)会从集合中选择两个整数x 和 y ,(但是集合中不能包含| x - y|),接着他就会把整数|x - y| 加入集合,因此,集合中的数据多加了一个……
如果当前玩家不能执行操作了,他就输了。问题是如果Alice和Bob都很聪明的情况下,谁能获胜呢?Alice是首先执行操作。
- 输入
- 多组测试数据,每组测试数据包含两行。
第一行一个整数n( 2 <= n <= 110),初始集合包含元素的个数
第二行依次输入n个数a1,a2……an,(1 <= ai <= 10^9)以空格分开,代表集合元素。 - 输出
- 如果Alice 获胜输出 “Alice”,否者输出“Bob”
- 样例输入
-
3
3 4 5 - 样例输出
-
Bob
讲解:摘抄的
看起来像博弈题,其实和博弈没有一点关系。给一个原始集合,每次操作都会往集合中加入一个新的元素,找出最后集合中元素的个数total,然后用 total-n 就是新加进去的元素个数。判断total-n 的奇偶性就可以判断出谁赢了。如何求total呢?如果开始时集合中只有2个数6 27,通过这两个数可以加进集合的数有21 15 9 3,这个过程实际上就是求gcd(6,27)的过程,最小的数就是gcd(6,27)=3,还发现集合中的元素都是3的倍数,那我们只需要判断[1,27]之间3的倍数有多少个就行了。 解法:求出n个数中的最大值Max和这n个数的最大公约数p,判断(Max / p — n)的 奇偶性即可。奇数Alice赢。
代码如下:
#include<cstdio>
#include<iostream>
using namespace std;
int gcd(int a,int b)
{
int r;
while(b!=)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
int n,a[],i;
while(cin>>n)
{
int Max=;
for(i=;i<n;i++)
{
cin>>a[i];
if(a[i]>Max)
Max=a[i];
}
int p=a[];
for(i=;i<n;i++)
p=gcd(p,a[i]); int ans=Max/p-n;
printf(ans& ? "Alice\n" : "Bob\n");
} return ;
}
ny788 又见Alice and Bob的更多相关文章
- hdu 4268 Alice and Bob(multiset|段树)
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- hdu 3660 Alice and Bob's Trip(树形DP)
Alice and Bob's Trip Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 2016中国大学生程序设计竞赛 - 网络选拔赛 J. Alice and Bob
Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- bzoj4730: Alice和Bob又在玩游戏
Description Alice和Bob在玩游戏.有n个节点,m条边(0<=m<=n-1),构成若干棵有根树,每棵树的根节点是该连通块内编号最 小的点.Alice和Bob轮流操作,每回合 ...
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
Alice and Bob Time Limit: 1000ms Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...
- sdutoj 2608 Alice and Bob
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2608 Alice and Bob Time L ...
- hdu 4268 Alice and Bob
Alice and Bob Time Limit : 10000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Tota ...
- 2014 Super Training #6 A Alice and Bob --SG函数
原题: ZOJ 3666 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666 博弈问题. 题意:给你1~N个位置,N是最 ...
- ACdream 1112 Alice and Bob(素筛+博弈SG函数)
Alice and Bob Time Limit:3000MS Memory Limit:128000KB 64bit IO Format:%lld & %llu Submit ...
随机推荐
- HDUOj Ignatius and the Princess III 题目1002
母函数 组合数学 #include<stdio.h> int c1[125]; int c2[125]; int main() { int n,i,j,k; while(scanf ...
- SQLite的升级(转)
做Android应用,不可避免的会与SQLite打交道.随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了. SQLite提供了ALTER ...
- JqGrid获得所有选中行数据ID数组,获取所有行的ID数组
获得选中行的ID数组:var ids = $("jqgridtableid").jqGrid('getGridParam','selarrrow'); 获得所有行的ID数组:var ...
- getpass模块
# -*- coding: utf-8 -*- #python 27 #xiaodeng #getpass模块 import getpass ''' >>> help(getpass ...
- 链接、ip地址及端口号
# encoding=utf-8 #python 2.7.10 #xiaodeng #链接(即报文如何通过传输控制协议链接从一个地方搬移到另外一个地方) #HTTP权威指南 13页 #TCP/IP # ...
- java SequenceInputStream类(序列输入流)的用法示例
public class SequenceInputStreamextends InputStream SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从 ...
- Linux 系统访问控制列表ACL
常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...
- C中字符串分割函数strtok的一个坑
strtok的典型用法是: p = strtok(s4, split); while(p != NULL){ printf("%s\n", p); p = strtok(NULL, ...
- AJAX 跨域 CORS 解决方案
本篇文章由:http://xinpure.com/solutions-for-cross-domain-ajax-cors/ 两种跨域方法 在 Javascript 中跨域访问是比较常见的事情 就像现 ...
- 用Visual Studio 2010开发Android应用
在开发你的第一个Android应用程序之前,你应该先检查一下是否安装了Android SDK,以及是否创建好了Android模拟器(AVD),如果有不清楚的地方,请先看我以前发布的这篇文章“Andro ...