Codeforces Round #651 (Div. 2)題解
阿新 • • 發佈:2020-09-01
Problem B
是這樣,原來的陣列是偶數長度,所以要麼有偶數個奇數和偶數個偶陣列成,要麼奇數偶數都是奇數個,要求gcd不等於1,那麼我們求gcd等於2就好了。直接暴力存奇數偶數,然後輸出就好了。
Problem C
首先我們特判1和2,然後如果先手面臨奇數的情況,先手必勝,如果是沒有奇數因子的偶數,後手必贏,一個數必然可以拆分成為若干個奇數因子和偶數因子相乘,那麼此時如果我把所有奇數因子全部除掉,就形成了沒有奇數因子的偶數,那麼先手必勝,這裡要判斷一下是否這個偶數因子是2.
程式碼實現
#include<cstdio> #include<algorithm> #include<vector> #include<queue> #include<map> #include<set> #include<iostream> #include<cstring> #include<cmath> using namespace std; #define rep(i,f_start,f_end) for (int i=f_start;i<=f_end;++i) #define per(i,n,a) for (int i=n;i>=a;i--) #define MT(x,i) memset(x,i,sizeof(x) ) #define rev(i,start,end) for (int i=start;i<end;i++) #define inf 0x3f3f3f3f #define mp(x,y) make_pair(x,y) #define lowbit(x) (x&-x) #define MOD 1000000007 #define exp 1e-8 #define N 1000005 #define fi first #define se second #define pb push_back typedef long long ll; const ll INF=0x3f3f3f3f3f3f3f3f; typedef vector <int> VI; typedef pair<int ,int> PII; typedef pair<int ,PII> PIII; ll gcd (ll a,ll b) {return b?gcd (b,a%b):a; } inline int read() { char ch=getchar(); int x=0, f=1; while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while('0'<=ch&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } int main () { int t; scanf ("%d",&t); while (t--) { int n; scanf ("%d",&n); if (n==1) printf ("FastestFinger\n"); else if (n==2) printf ("Ashishgup\n"); else if (n%2==1) printf ("Ashishgup\n"); else { int flag=0; for (int i=2;i*i<=n;i++) { if (n%i!=0) continue; if (i%2==1&&(n/i)!=2) flag=1; if ((n/i)%2==1&&i!=2) flag=1; } if (flag) printf ("Ashishgup\n"); else printf ("FastestFinger\n"); } } return 0; }