D. Deleting Divisors(博弈)
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(博弈)相关推荐
- Codeforces Round #726 (Div. 2) D. Deleting Divisors 博弈
传送门 文章目录 题意: 思路: 题意: 给你一个数nnn,有两个人博弈,每次可以将nnn减去一个nnn的因子,这个因子不能为111或nnn.当不能操作的人输掉游戏.问你先手赢还是后手赢. 思路: 这 ...
- D. Deleting Divisors
传送门:CF 题目如下: 前言: 显而易见,这题是一道博弈题. 初解此题大致思路和标答一致,但还是没有想的很清楚,所以还是没有过. 思路: 在做博弈题的时候,一定要想清楚必胜条件. 这题的必胜条件很明 ...
- [CF1537D]Deleting Divisors
题目 传送门 to CF 题目概要 一个博弈游戏,只有一个数字.两人轮流操作,每次可以将当前的数字 n 0 n_0 n0 减去它的因数 d ( d ≠ 1 ∧ d ≠ n 0 ) d\;(d\ne ...
- [CF/AT/Luogu]各大网站网赛 爆肝部部长工作报告文件Ⅱ
文章目录 CodeForces LATOKEN-Round-1(Div.1+Div.2) A. Colour the Flag B. Histogram Ugliness C. Little Alaw ...
- 博弈论 1.Introduction(组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏)
1.博弈 博弈论是研究具有斗争或竞争性质现象的数学理论和方法. 每个玩家都有一个偏好,A一般是希望A赢,如果不可以的话就倾向于 平局,B一般倾向B赢,达不到的话就倾向于平局.他们的每一步组成了一个&q ...
- 东北大学程序设计夏令营博弈论与构造
博弈与构造专题 本次训练包含题目 Problem A Matches Game Problem B Georgia and Bob Problem C Deleting Divisors Proble ...
- POJ1067_取石子游戏_威佐夫博弈
/* *State: 1067 Accepted 176K 16MS C++ 435B *题目大意: * 威佐夫博弈 *解题思路: * 略. */ #include <iostream> ...
- Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...
- BZOJ2275[Coci2010]HRPA——斐波那契博弈
题目描述 N个石子,A和B轮流取,A先.每个人每次最少取一个,最多不超过上一个人的个数的2倍. 取到最后一个石子的人胜出,如果A要有必胜策略,第一次他至少要取多少个. 输入 第一行给出数字N,N< ...
最新文章
- 网站一开启网站访问硬盘读取就变慢
- win2003服务器记录文件夹,在Windows Server 2003里快速查找文件
- 【转】Luajit-2.1.0-beta1的发布和生成arm64用bytecode的解脱
- vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
- java仿qq登录 界面设计,Java Swing仿QQ登录界面效果
- sql server中创建数据库和表的语法
- online游戏服务器架构--网络架构
- 动态规划在求解传递闭包问题中的应用(JAVA)--Warshell算法
- tensorflows十五 再探Momentum和Nesterov's accelerated gradient descent 利用自动控制PID概念引入误差微分控制超参数改进NAGD,速度快波动小
- python输入字符串str_python字符串String模块
- wind python接口手册_wind量化平台-用户手册(python).pdf
- 【100+ python基础入门-26】python修改列表元素方法
- 域名注册管理机构域名注册服务机构的基本概念
- 中等分辨率卫星影像幅宽大比拼
- win服务器物理内存占用高,win10系统长时间使用物理内存过高的解决方法
- poi 删除 word文档中的图片
- AWTK 在腾讯 TOS 上的移植笔记
- 赛门铁克ssl证书 仲裁证书
- IMX系列设备树引脚复用解析
- 原子量解决多线程(多应用)同时访问一个变量值问题