C. Number Game(博弈)

 A 和 F 比賽,有一個數 n ,有以下操作

1.減一

2.除以一個大於 1 並且必須是奇數的因數,可以除以自己,如果自己是奇數的話

規定 A 先操作,若 n 是奇數,n 除以它本身 ,A 贏

若爲偶數,只要有一個因數是奇數,那麼一定存在最大的奇因數,除以這個最大的,一定變爲偶數,若不爲 2 ,對手減一後 ,A 一定贏

//#pragma GCC optimize(2)
//#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <set>
#include <map>
#define rush() int T;cin>>T;while(T--)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define sd(a) scanf("%d",&a)
#define sdd(a,b) scanf("%d%d",&a,&b)
#define pd(a) printf("%d\n",a)
#define debug(a) cout<<"*"<<a<<"*"<<endl
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define PAUSE system("pause")
using namespace std;
typedef long long ll;
typedef unsigned ui;
typedef unsigned long long ull;
typedef pair<int,int> Pair;
const int inf=0x7f7f7f7f;
const int mod=100003;
const int N=1e4+5;
 
    int n,m,t;
    int i,j,k;
    int a[N];
    
int main()
{
    IOS;
    rush(){
        cin>>n;
        if (n==1) cout<<"FastestFinger"<<endl;
        else if (n==2) cout<<"Ashishgup"<<endl;
        else if (n&1) cout<<"Ashishgup"<<endl;
        else{
            int flag=1;
            for(int i=2;i*i<=n && flag;i++){
                if(n%i) continue;
                if( ( i & 1 ) && n/i!=2 ) flag=0;
                if( ( (n/i) & 1 ) && i!=2) flag=0;
            }
            if(flag) cout<<"FastestFinger"<<endl;
            else cout<<"Ashishgup"<<endl;
        } 
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章