Skip to content

Commit fc7e827

Browse files
authored
[20260103] BOJ / P2 / 최대공약수 게임 / 권혁준
1 parent 2557d17 commit fc7e827

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
```

0 commit comments

Comments
 (0)