Codeforces Round #201 (Div. 2) - C. Alice and Bob
2016-03-03 19:51
239 查看
题目链接:http://codeforces.com/contest/347/problem/C
题意是给你一个数n,然后n个数,这些数互不相同。每次可以取两个数x和y,然后可以得到|x - y|这个数,要求不在这个数组中,然后添加进去,直到不能取为止,不能取的人输了。Alice先取,求谁最后能赢。
可以先列举几种情况,可以发现,一般情况取到最后剩下1~max这些数了。但是要是比如原来的数有3 12这两个数,那最后就会剩下3 6 9 12这4个数,由此可以看出这种情况下剩下的一定是原来数的gcd的倍数,所以答案就是Max/gcd - n。
题意是给你一个数n,然后n个数,这些数互不相同。每次可以取两个数x和y,然后可以得到|x - y|这个数,要求不在这个数组中,然后添加进去,直到不能取为止,不能取的人输了。Alice先取,求谁最后能赢。
可以先列举几种情况,可以发现,一般情况取到最后剩下1~max这些数了。但是要是比如原来的数有3 12这两个数,那最后就会剩下3 6 9 12这4个数,由此可以看出这种情况下剩下的一定是原来数的gcd的倍数,所以答案就是Max/gcd - n。
#include <iostream> using namespace std; int a[105]; int gcd(int x , int y) { if(!y) return x; return gcd(y , x % y); } int main() { int n , temp , Max = -1; cin >> n; for(int i = 1 ; i <= n ; i++) { cin >> a[i]; Max = max(Max , a[i]); } temp = gcd(a[2] , a[1]); for(int i = 3 ; i <= n ; i++) temp = gcd(temp , a[i]); if((Max / temp - n) & 1) cout << "Alice\n"; else cout << "Bob\n"; }
相关文章推荐
- windows expect-5.21r1b1-setup.exe 下载链接
- 第一周作业
- 浏览器缓存机制
- BZOJ 2400(网络流最小割)
- Spark , JAVA_HOME is not set
- ProcessBuilder中如何为命令行传参
- 对于大流量的网站,采用什么样的方法解决访问量问题
- BZOJ4409: [Usaco2016 Feb]Circular barn
- Java保留小数点后数字位数
- mysql中null与not null的区别及效率
- 划分树 poj2104 hdu5249
- moon 。 XML第二章
- Java基础之标识符与关键字
- Html自定义alert,confirm弹窗
- 清除浮动
- MBR分区表分析
- 如何破解防拷贝光盘
- java非,或与和三种移位运算
- selenium学习的一些笔记
- 设计模式——单例模式