// 让我们一起赞美良心评分人和凉心出题人!
#include <bits/stdc++.h>
#define int long long
using namespace std;
map <int, int> mp;
map <int, int> sg;
void fj(int n) {
int t = n;
for (int i = 2; i * i <= t; i ++)
if (n % i == 0) {
int cnt = 0;
while (n % i == 0) {
cnt ++;
n /= i;
}
mp[i] |= (1 << cnt - 1);
}
if (n > 1)
mp[n] |= 1;
}
int dfs(int x) {
if (!x)
return 0;
if (sg.count(x))
return sg[x];
set <int> se;
int t = x;
int bit = 0;
while (t) {
t >>= 1;
bit ++;
}
for (int i = 1; i <= bit; i ++)
se.insert(dfs(x >> i | (x & (1 << i - 1) - 1)));
for (int i = 0; ; i ++)
if (!se.count(i))
return sg[x] = i;
}
signed main() {
int n, xr = 0;
cin >> n;
for (int i = 1; i <= n; i ++) {
int x;
cin >> x;
fj(x);
}
for (auto &[u, v] : mp)
xr ^= dfs(v);
if (xr)
cout << "Mojtaba\n";
else
cout << "Arpa\n";
return 0;
}
11-28
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交