Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define sz(s) (int)(s).size()
- #define all(s) s.begin(),s.end()
- void Speed() {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- }
- const int N=101;
- int dp[N];
- int brute(int x){
- int &ret=dp[x];
- if(~ret)return ret;
- ret=0;
- set<int>st;
- for(int i=1;i<=x;i++){
- if((i&(i-1))==0 && i*2>x)break;
- st.insert(brute(x - i));
- }
- while(st.count(ret))ret++;
- return ret;
- }
- int grundy(int x){
- int pw = 1;
- while(pw * 2 <= x) pw <<= 1;
- int len = pw / 2;
- x -= pw-1;
- int ret=0;
- while(x > 0 && len>0){
- if(x > len) x -= len, len >>= 1;
- else {ret=len+x;break; }
- }
- if(ret)ret--;
- return ret;
- }
- void solve() {
- int n;
- cin>>n;
- int ans=0;
- for (int i = 0; i < n; ++i) {
- int x;cin>>x;
- ans^= grundy(x);
- }
- cout<<(ans?"First":"Second")<<'\n';
- }
- int main() {
- Speed();
- int tc = 1;
- cin >> tc;
- while (tc--) {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment