結果
| 問題 |
No.2 素因数ゲーム
|
| コンテスト | |
| ユーザー |
303Yuyu
|
| 提出日時 | 2021-03-11 23:44:52 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,730 bytes |
| コンパイル時間 | 1,489 ms |
| コンパイル使用メモリ | 171,996 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-13 10:36:40 |
| 合計ジャッジ時間 | 2,503 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
ソースコード
#include <bits/stdc++.h>
//#include <atcoder/all>
using namespace std;
//using namespace atcoder;
using ll = long long;
using vll = vector<ll>;
using vvll = vector<vll>;
using pll = pair<ll, ll>;
using vpll = vector<pll>;
using ld = long double;
using vld = vector<ld>;
using vb = vector<bool>;
#define rep(i, n) for (ll i = 0; i < (n); i++)
#ifdef LOCAL
#define dbg(x) cerr << __LINE__ << " : " << #x << " = " << (x) << endl
#else
#define dbg(x) true
#endif
template <class T> bool chmin(T& a, T b) {
if(a > b) { a = b; return true; }
else return false;
}
template <class T> bool chmax(T& a, T b) {
if(a < b) { a = b; return true; }
else return false;
}
template <class T> ostream& operator<<(ostream& s, const vector<T>& a) {
for(auto i : a) s << i << ' ';
return s;
}
constexpr int INF = 1 << 30;
constexpr ll INFL = 1LL << 60;
constexpr ld EPS = 1e-12;
ld PI = acos(-1.0);
// 素因数分解
// nの(素因数、指数)のペアを返す。計算量はO(√nlogn)
vector<pair<ll, ll>> prime_factorize(ll n) {
vector<pair<ll, ll>> ret;
for(ll i = 2; i*i <= n; ++i) {
if(n % i != 0) continue;
ll ex = 0;
while(n % i == 0) {
++ex;
n /= i;
}
ret.push_back({i, ex});
}
if(n > 1) ret.push_back({n, 1});
return ret;
}
// https://yukicoder.me/problems/no/2
void solve() {
ll n;
cin >> n;
vpll p = prime_factorize(n);
ll x = 0;
for(auto i : p) x ^= i.second;
string ans;
if(x) ans = "Alice";
else ans = "Bob";
cout << ans << endl;
return;
}
int main() {
std::cin.tie(nullptr);
std::ios_base::sync_with_stdio(false);
cout << fixed << setprecision(15);
solve();
}
303Yuyu