题意:给你两个数,a,b,有两个人轮流进行一次操作, 每次操作可以将大的数减去k倍的小的数,最后不能操作的人输了,问你谁赢了。

思路:我们可以用辗转相除法求出对于每一个状态可以改变几次,这样问题就变成了给你若干堆石子,只能将前面堆的石子全部取完啦才能

取当前堆的石子,对于每一堆来说能取任意个,最后不能取的人失败,从后往前必败必胜推一下就好啦。

 1 #include<bits/stdc++.h>
 2 #define LL long long
 3 #define fi first
 4 #define se second
 5 #define mk make_pair
 6 using namespace std;
 7
 8 const int N=1e5+7;
 9 const int M=100+7;
10 const int inf=0x3f3f3f3f;
11 const LL INF=0x3f3f3f3f3f3f3f3f;
12 const int mod=1e9 + 9;
13
14 vector<int> v;
15 bool flag[N];
16
17 int gcd(int a, int b) {
18     if(!b) return a;
19     v.push_back(a / b);
20     return gcd(b, a % b);
21 }
22
23 int main() {
24     int a, b, n;
25     while(scanf("%d%d", &a, &b) != EOF && a) {
26         if(a < b) swap(a, b);
27         v.clear();
28         gcd(a, b);
29         n = v.size();
30         flag[n - 1] = true;
31         for(int i = n - 2; i >= 0; i--) {
32             if(flag[i + 1]) {
33                 if(v[i] > 1) {
34                     flag[i] = true;
35                 } else {
36                     flag[i] = false;
37                 }
38             } else {
39                 flag[i] = true;
40             }
41         }
42         if(flag[0]) puts("Stan wins");
43         else puts("Ollie wins");
44     }
45     return 0;
46 }
47 /***************
48 ****************/

转载于:https://www.cnblogs.com/CJLHY/p/8908209.html

HDU - 1525相关推荐

  1. hdu 1525 Euclid‘s Game

    hdu 1525 文章目录 Problem Description 题意: 题解: 代码: Problem Description Two players, Stan and Ollie, play, ...

  2. HDU 1525 类Bash博弈

    给两数a,b,大的数b = b - a*k,a*k为不大于b的数,重复过程,直到一个数为0时,此时当前操作人胜. 可以发现如果每次b=b%a,那么GCD的步数决定了先手后手谁胜,而每次GCD的一步过程 ...

  3. HDU 1525 - Euclid's Game ( 博弈 )

    题意 Stan和Ollie玩游戏,Stan先手.给出两个数字,可以用大数减去小数的整数倍,要求不能减到小于0.谁先将一个数字减到0,谁获胜. 思路 博弈 假设 a > b 比赛的时候想到了关于a ...

  4. HDU 1525 Euclid's Game

    题目大意: 题目给出了两个正数a.b 每次操作,大的数减掉小的数的整数倍.一个数变为0 的时候结束. 谁先先把其中一个数减为0的获胜.问谁可以赢.Stan是先手. 题目思路: 无论a,b的值为多少,局 ...

  5. 【 HDU - 1525 】Euclid's Game(较难找规律,玄学博弈,分析必败点必胜点)

    题干: Two players, Stan and Ollie, play, starting with two natural numbers. Stan, the first player, su ...

  6. hdu 1525 博弈

    欧几里德问题上的博弈,理解后不难. /* * hdu1525/win.cpp * Created on: 2011-11-11 * Author : ben*/#include <cstdio& ...

  7. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  8. 一起开心2020暑假训练第一周

    hdu 1576 A/B oj传送 题解: Poj 1061 青蛙的约会 oj传送 题解: hdu 1525 Euclid's Game oj传送 题解: Poj 3070 Fibonacci oj传 ...

  9. 每日打卡 2017.04.02 博弈论专题

    https://vjudge.net/contest/156519#overview 打表:比如求斐波那契的第k项,k<=1000,很多case,这时可以预处理的时候把1-1000全部求出来并储 ...

最新文章

  1. python求1到n的乘积_Python简单实现两个任意字符串乘积的方法示例
  2. 痛苦的老师开心的我们
  3. Boost Asio总结(5)class tcp
  4. SAP Commerce开发时的Spring学习要点记录
  5. 一个 SQL 同时验证帐号是否存在、密码是否正确
  6. arduino串口输入改变模式模块
  7. 第一百八十四节,jQuery-UI,验证注册表单
  8. mysql驱动包放在ecplise哪里_eclipse导入mysql jdbc驱动包的具体步骤及注意事项
  9. android4.0以上,利用耳机接听键实现自动接听,部分手机失败原因+解决方法(比如华为P7)
  10. RENIX 软件如何进行IP地址管理——网络测试仪实操
  11. AndroidSDK和ADT下载地址
  12. 面对裁员潮,程序员如何安身立命
  13. 2022年终总结与2023新年展望
  14. 第一行代码-第二版(郭霖著)笔记十(Service)
  15. 汇佳学校新推“未来艺术大师”项目 实现学术艺术双赢
  16. IE与非IE浏览器调用PC摄像头拍摄并且上传
  17. KMeans聚类 K值的确定以及初始类簇中心点的选取
  18. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.lxw
  19. 递归入门(C语言实现)
  20. 利用Word解锁注册表

热门文章

  1. 正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例及原理
  2. C# Regex 深入正则表达式
  3. 漫步凸分析三——凸集代数
  4. java解压zip包_Java中文件的压缩与解压,每天进步一点点系列
  5. numpy.arange语法,作用以及举例
  6. excel vba 特殊符号
  7. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
  8. 爬虫学习二: bs4 xpath re
  9. jQuery验证表单插件——jquery-validation
  10. 156 - Ananagrams