Problem - D - Codeforces

爱丽丝和鲍勃在玩游戏。它们从一个正整数n开始,轮流对其进行操作。玩家每回合可以从n中减去一个不是1或n的除数。在他/她的回合中不能移动的玩家失败。爱丽丝总是先动。注意,他们在每个回合中减去当前数字的除数。你被要求找出如果两个玩家都发挥最佳,谁将赢得游戏。输入第一行包含一个整数t (1 < t < 104)——测试用例的数量。然后是测试用例。每个测试用例都包含一个整数n (1 <n < 109)——初始值。输出对于每个测试用例,如果Alice将赢得游戏,则输出“Alice”,如果Bob将赢得游戏,则输出“Bob”,如果双方都采用最佳玩法。

Example

input

Copy

4
1
4
12
69

output

Copy

Bob
Alice
Alice
Bob

请注意在第一个测试案例中,游戏立即结束,因为Alice无法移动。在第二个测试案例中,Alice可以减去2,使n= 2,那么Bob不能移动,所以Alice赢了。在第三个测试案例中,Alice可以减去3,使n =9。Bob唯一的动作是减去3,使n = 6。爱丽丝可以再减去3和n3。然后鲍勃不能动,所以爱丽丝赢了。

题解:
假如n为奇数

1.如果n为质数,那么A直接输

2.如果n不是质数,那么n可以分为两个奇数的乘积,a操作后,n一定是个偶数(并且奇数因子,一定不是2),b操作后,再减去一个奇数,n又变成奇数,所以b必不可能输

假如n为偶数

1.如果n有不为1的奇数因子,可以减去一个奇数因子,变成上述情况,A必赢

2.n无不为1的奇数因子,n的形式为2^k

为了不变成奇数情况每个人会减2 ^(k-1),所以看谁先变成2

k%2 B赢

k%2 == 0 A输

#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
int pri[200050];
int vis[200050];
int cnt = 0;
void solve()
{int n;scanf("%d",&n);if(n % 2){printf("Bob\n");return ;}int k = 0;while(n%2 == 0){n /= 2;k++;}if(n!=1){cout <<"Alice\n";}else{if(k%2){cout <<"Bob\n";}else{printf("Alice\n");}}
}
signed main()
{
//  ios::sync_with_stdio(0);
//  cin.tie(0);cout.tie(0);int t = 1;scanf("%d",&t);while (t--) {solve();}return 0;
}

D. Deleting Divisors(博弈)相关推荐

  1. Codeforces Round #726 (Div. 2) D. Deleting Divisors 博弈

    传送门 文章目录 题意: 思路: 题意: 给你一个数nnn,有两个人博弈,每次可以将nnn减去一个nnn的因子,这个因子不能为111或nnn.当不能操作的人输掉游戏.问你先手赢还是后手赢. 思路: 这 ...

  2. D. Deleting Divisors

    传送门:CF 题目如下: 前言: 显而易见,这题是一道博弈题. 初解此题大致思路和标答一致,但还是没有想的很清楚,所以还是没有过. 思路: 在做博弈题的时候,一定要想清楚必胜条件. 这题的必胜条件很明 ...

  3. [CF1537D]Deleting Divisors

    题目 传送门 to CF 题目概要 一个博弈游戏,只有一个数字.两人轮流操作,每次可以将当前的数字 n 0 n_0 n0​ 减去它的因数 d ( d ≠ 1 ∧ d ≠ n 0 ) d\;(d\ne ...

  4. [CF/AT/Luogu]各大网站网赛 爆肝部部长工作报告文件Ⅱ

    文章目录 CodeForces LATOKEN-Round-1(Div.1+Div.2) A. Colour the Flag B. Histogram Ugliness C. Little Alaw ...

  5. 博弈论 1.Introduction(组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏)

    1.博弈 博弈论是研究具有斗争或竞争性质现象的数学理论和方法. 每个玩家都有一个偏好,A一般是希望A赢,如果不可以的话就倾向于 平局,B一般倾向B赢,达不到的话就倾向于平局.他们的每一步组成了一个&q ...

  6. 东北大学程序设计夏令营博弈论与构造

    博弈与构造专题 本次训练包含题目 Problem A Matches Game Problem B Georgia and Bob Problem C Deleting Divisors Proble ...

  7. POJ1067_取石子游戏_威佐夫博弈

    /* *State: 1067 Accepted 176K 16MS C++ 435B *题目大意: * 威佐夫博弈 *解题思路: * 略. */ #include <iostream> ...

  8. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

  9. BZOJ2275[Coci2010]HRPA——斐波那契博弈

    题目描述 N个石子,A和B轮流取,A先.每个人每次最少取一个,最多不超过上一个人的个数的2倍. 取到最后一个石子的人胜出,如果A要有必胜策略,第一次他至少要取多少个. 输入 第一行给出数字N,N< ...

最新文章

  1. 网站一开启网站访问硬盘读取就变慢
  2. win2003服务器记录文件夹,在Windows Server 2003里快速查找文件
  3. 【转】Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱
  4. vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
  5. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果
  6. sql server中创建数据库和表的语法
  7. online游戏服务器架构--网络架构
  8. 动态规划在求解传递闭包问题中的应用(JAVA)--Warshell算法
  9. tensorflows十五 再探Momentum和Nesterov's accelerated gradient descent 利用自动控制PID概念引入误差微分控制超参数改进NAGD,速度快波动小
  10. python输入字符串str_python字符串String模块
  11. wind python接口手册_wind量化平台-用户手册(python).pdf
  12. 【100+ python基础入门-26】python修改列表元素方法
  13. 域名注册管理机构域名注册服务机构的基本概念
  14. 中等分辨率卫星影像幅宽大比拼
  15. win服务器物理内存占用高,win10系统长时间使用物理内存过高的解决方法
  16. poi 删除 word文档中的图片
  17. AWTK 在腾讯 TOS 上的移植笔记
  18. 赛门铁克ssl证书   仲裁证书
  19. IMX系列设备树引脚复用解析
  20. 原子量解决多线程(多应用)同时访问一个变量值问题

热门文章

  1. 商务英文信函写法大全篇
  2. 多线程查询快递单号,支持导出~附带易语言源码
  3. C51学习笔记 7.LED点阵屏
  4. 约瑟夫问题-N个人围成一圈循环杀掉第M个人
  5. 用java建立多项式logit模型_请问logit模型和logistic模型是不是一样的?
  6. 每日学习——4.4号
  7. 三星也将用上X1核心,华为的麒麟9000或落后于三星和高通
  8. 微信怎么批量自动添加好友?
  9. matlab cftool光滑曲线导出为什么就不光滑了_【富怡CAD问题答疑】为什么我画的曲线有锯齿状,不光滑...
  10. 呼吸灯——verilog 实现