codeforces 347 c Alice and Bob(博弈 && 数学)
来源:互联网 发布:微信淘宝客怎么拉人 编辑:程序博客网 时间:2024/05/29 03:06
题意:
给出一个数的set,a和b每次轮流选两个不同的数,当这两个数的差的绝对值在set里不存在时,就可以把这个差值加入到set里,当有人不能加入时输,游戏结束。
解题思路:
其实能加入多少个数是固定的,跟先后操作顺序无关。所以我们只需要确定可以步数即可以加入多少个数,然后判断奇偶就可以确定谁赢了。
然后怎么确定呢,找规律我们可以发现当一个set里的数成等比数列的时候,我们就无法再加入一个数。一个set里最终形成的等比数列的公比就是它们的gcd,所以最大值max/gcd就是这个等比数列的个数,减去n就是可以加入的数,判断下奇偶即可。
代码:
#include <bits/stdc++.h>using namespace std;const int maxn=1e5+5;int a[maxn];int main(){ int n, i, num; num=0; cin>>n; int x, ma=0; int g; for(i=0; i<n; i++) { scanf("%d", &a[i]); ma=a[i]>ma?a[i]:ma; if(i==1)g=__gcd(a[0], a[1]); else if(i>1)g=__gcd(g, a[i]); } /* int j, k, ans=0;; for(i=0; i<n; i++) { for(j=i+1; j<n; j++) { x=abs(a[i]-a[j]); for(k=0; k<n; k++) { if(x==a[k])break; } if(k==n)ans=1; } } if(ans==0)return 0*printf("Bob\n"); */ if((ma/g-n)%2)printf("Alice\n"); else printf("Bob\n");}
阅读全文
0 0
- codeforces 347 c Alice and Bob(博弈 && 数学)
- CodeForces 347C Alice and Bob(博弈)
- 【博弈】Alice and Bob CodeForces
- CodeForces 347 C. Alice and Bob
- Codeforces 347C Alice and Bob
- CodeForces 347 C. Alice and Bob
- codeforces#347div2 C. Alice and Bob
- Codeforces 347C - Alice and Bob
- CodeForces 347C Alice and Bob
- Alice and Bob(博弈)
- Codeforces Round #201 (Div. 2) C. Alice and Bob ( 数学
- [CodeForces 346A]Alice and Bob[数学]
- ZOJ 3666 Alice and Bob(博弈)
- XTU 1209 Alice and Bob (博弈)
- Codeforces 585C Alice, Bob, Oranges and Apples(规律)
- codeforces 6C - Alice, Bob and Chocolate
- Codeforces 6C. Alice, Bob and Chocolate
- CodeForces 6C - Alice, Bob and Chocolate
- (78)自定义事件
- 跨页面的操作
- ajax解析Json数据的方法
- 监控JAVA应用的好工具javamelody
- Android中自己实现App一打开判断是否有更新,并通过依赖AutoInstaller实现自动更新
- codeforces 347 c Alice and Bob(博弈 && 数学)
- win10安装时提示 “我们无法创建分区也找不到现有的分区”
- Uva10305 Ordering Tasks(拓扑排序)
- 点击不同按钮换不同标题栏图标
- Android之模拟网易新闻客户端
- Spring 设计模式——观察者|事件驱动模型
- 如何处理fast_recovery_area无剩余空间
- stringr数据处理
- 数据结构——图