1370C
题意:
A和F博弈,给一个数字N,可以做一下两种操作:
if(N>1)N--;
if(x%2==1 && N%x==0 && N>1 && x>1)N/=x;
不能进行操作的人会输,A先手
思路:
可以看出来,如果N>1&&(N&1)
或者N==2
,A能赢;如果N是偶数,但是N除以它的最大的奇数(大于1)的值大于2的话,A能赢;其他情况F会赢
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5+10;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t,n;
cin>>t;
while(t--)
{
cin>>n;
if((n&1)||n==2)
{
if(n>1)
cout<<"Ashishgup"<<endl;
else
cout<<"FastestFinger"<<endl;
continue;
}
int k=0;
for(int i=2; i*i<=n; i++)
{
if(n%i==0)
{
if(i&1)k=i;
if((n/i)&1)k=n/i;
}
}
if(k==0||n/k==2)
cout<<"FastestFinger"<<endl;
else
cout<<"Ashishgup"<<endl;
}
return 0;
}