首页 > 其他分享 >*Codeforces Round #651 (Div. 2) C. Number Game(博弈论)

*Codeforces Round #651 (Div. 2) C. Number Game(博弈论)

时间:2022-09-03 01:11:25浏览次数:92  
标签:int FastestFinger LL Number Codeforces Ashishgup Game typedef

https://codeforces.com/contest/1370/problem/C

Ashishgup和FastestFinger玩游戏。

他们从数字n开始,轮流玩。在每个回合中,玩家可以进行以下任意一个动作:

将n除以任何大于1的奇数因子。
如果n大于1,则从n中减去1。

一个数的约数包括该数本身。

不能移动的玩家输掉游戏。

Ashishgup先行动。如果双方都发挥出最佳状态,则确定游戏的赢家。
input 
7
1
2
3
4
5
6
12
output 
FastestFinger
Ashishgup
Ashishgup
FastestFinger
Ashishgup
FastestFinger
Ashishgup
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const int N=200200,M=2002;
bool is_prime(int x)
{
    if(x<2) return false;
    for(int i=2;i<=x/i;i++)
        if(x%i==0) return false;
    return true;
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        if(n==1) cout<<"FastestFinger"<<endl;
        else if(n==2||n%2==1) cout<<"Ashishgup"<<endl;
        else
        {
            if(n%4==0)
            {
                while(n%2==0) n/=2;
                //可以除尽说明没有奇数在内,后手F必定赢
                if(n==1) cout<<"FastestFinger"<<endl;
                else cout<<"Ashishgup"<<endl;
                //否则说明内夹奇数,就是在偶数的操作上+1,先手必胜
            }
            else
            {
                //质数的2倍建立在奇数A必赢的基础上,所以F必赢
                if(is_prime(n/2)==true) cout<<"FastestFinger"<<endl;
                else cout<<"Ashishgup"<<endl;

            }
        }
    }
    return 0;
}

标签:int,FastestFinger,LL,Number,Codeforces,Ashishgup,Game,typedef
From: https://www.cnblogs.com/Vivian-0918/p/16651803.html

相关文章

  • CF55D Beautiful numbers
    求\([l,r]\)中满足\(x\)能被\(x\)数位中所有非\(0\)位整除的数的个数。\(l,r\leq9\times10^{18}\)。\(lcm(1\sim9)=2520\)。标准的数位DP。用\(dp[i][j][k......
  • Educational Codeforces Round 123 D
    D.CrossColoring很容易想到的就是分成几个块有几个就是k多少次幂但是显然暴力的做法是n2的我们考虑如何优化我们考虑对每一行这个x[i]能成立的条件是啥那就是y[i]......
  • Educational Codeforces Round 123 E
    E.ExpandthePath我们画出一个合法的一般性的来研究比如RDRDR我们可以将其任意一个往下往右延长但是这个图形获得的面积是不规则的但是我们知道合法的序列肯定是......
  • Codeforces Round #814 (Div. 2)
    Preface关于军训……它死了第一次感觉到疫情的好处,就是不知道训了一半给不给学分,要不要补训一直打隔膜颓废也不是办法,因此来写写题(才不是因为路由器没到舍不得用流量更......
  • Painting Game (博弈论)
    题目:  VirtualJudge(vjudge.net)题目大意:2个人轮流对长条方格填黑,黑的地方不能够相邻.一个人要尽量填黑,一个人要尽量不填黑,当不能填的时候就结束题解思路:......
  • Educational Codeforces Round 134 (Rated for Div. 2) D Maximum AND
    MaximumAND贪心从高位开始,尽可能地让\(a\)中该位为\(0\)的和\(b\)中该位为\(1\)的配对在一起,换句话说,可以让\(a\)由小到大排序,\(b\)由大到小排序如果当......
  • codeforces极简题解
    CF1713F利用lucas定理,\(b_S\)表示下标\(T\)与\(S\)无交的\(a_T\)的异或,由于部分\(b_S\)未知,不能直接iFWT。回顾容斥:\([S=\emptyset]=\sum_{T\subseteqS}(-1)^|T|\),\([n=0......
  • CF446C DZY Loves Fibonacci Numbers
    CF446CDZYLovesFibonacciNumbers题目大意在本题中,我们用\(f_i\)来表示第\(i\)个斐波那契数(\(f_1=f_2=1,f_i=f_{i-1}+f_{i-2}(i\ge3)\))。维护一个序列\(a\),长......
  • Codeforces Round #773 E
    AnonymityIsImportant我们最开始会想到用三个状态表示其实并不用我们只需要用0表示这个人没病1表示不确定有病(这样我们就可以用set来做了)要是一个区间给了有病我们......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    DMaxiumAnd贪心,优先满足高位,每次判断是否能够满足这一位答案为1,如果能则更新答案,这样显然是优的EPrefixFunction模仿求前缀函数的算法,先预处理求出\(|S|\)的前缀函......