File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` cpp
2+ #include < bits/stdc++.h>
3+ using namespace std ;
4+
5+ int N, X;
6+ vector<int > primes;
7+ bool ex[301 ][512 ]{};
8+ bitset<512 > base;
9+
10+ int main () {
11+ cin.tie(0)->sync_with_stdio(0);
12+
13+ cin>>N>>X;
14+ for(int i=2;i*i<=X;i++) if(X%i == 0) {
15+ primes.push_back(i);
16+ while(X%i == 0) X /= i;
17+ }
18+ if(X != 1) primes.push_back(X);
19+
20+ ex[0][(1<<primes.size())-1] = 1;
21+ for(int i=1,a;i<=N;i++) {
22+ cin>>a;
23+ int mask = 0;
24+ for(int j=0;j<primes.size();j++) if(a%primes[j] == 0) mask |= (1<<j);
25+
26+ for(int j=i-1;j>=0;j--) for(int k=1;k<512;k++) if(ex[j][k] && (k&mask)) {
27+ ex[j+1][k&mask] = 1;
28+ if(k != mask) base[k] = 1;
29+ }
30+ }
31+
32+ for(int k=1;k<512;k++) if(!base[k]) {
33+ for(int j=N;j>=0;j--) if(ex[j][k]) {
34+ if(j&1) return cout<<"First",0;
35+ break;
36+ }
37+ }
38+ cout<<"Second";
39+
40+ }
41+ ```
You can’t perform that action at this time.
0 commit comments