結果
問題 | No.1113 二つの整数 / Two Integers |
ユーザー |
|
提出日時 | 2020-07-17 22:10:46 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 5 ms / 1,000 ms |
コード長 | 2,950 bytes |
コンパイル時間 | 3,404 ms |
コンパイル使用メモリ | 207,388 KB |
最終ジャッジ日時 | 2025-01-11 22:45:52 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 15 |
ソースコード
#include <bits/stdc++.h>using namespace std;template <class T> inline bool chmax(T &a, T b) {if(a < b) {a = b;return 1;}return 0;}template <class T> inline bool chmin(T &a, T b) {if(a > b) {a = b;return 1;}return 0;}void debug() { cerr << "\n"; }template <class T> void debug(const T &x) { cerr << x << "\n"; }template <class T, class... Args> void debug(const T &x, const Args &... args) {cerr << x << " ";debug(args...);}template <class T> void debugVector(const vector<T> &v) {for(const T &x : v) {cerr << x << " ";}cerr << "\n";}using ll = long long;#define ALL(v) (v).begin(), (v).end()#define RALL(v) (v).rbegin(), (v).rend()const double EPS = 1e-7;const int INF = 1 << 30;const ll LLINF = 1LL << 60;const double PI = acos(-1);constexpr int MOD = 1000000007;const int dx[4] = {1, 0, -1, 0};const int dy[4] = {0, 1, 0, -1};//-------------------------------------struct factorise {ll mul(ll a, ll b, ll c) { return (__int128)a * b % c; }ll pow(ll a, ll b, ll m) {ll res = 1;while(b) {if(b & 1) {res = mul(res, a, m);}a = mul(a, a, m);b >>= 1;}return res;}bool isprime(ll n) {if(!(n & 1) && n != 2)return false;ll d = n - 1;int s = __builtin_ctzll(d);d >>= s;vector<int> A;if(n <= 1e9)A = {2, 3, 5, 7};elseA = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37};for(int a : A) {ll p = pow(a, d, n);int i = s;while(p != 1 && p != n - 1 && a % n && --i) {p = mul(p, p, n);}if(p != n - 1 && i != s)return false;}return true;}ll pollard(ll n) {auto f = [&](ll a) { return mul(a, a, n) + 1; };ll x = 0, y = 0, p = 2, q;int i = 1, t = 0;while(t++ % 40 || gcd(p, n) == 1) {if(x == y)x = ++i, y = f(x);if(q = mul(p, abs(y - x), n))p = q;x = f(x);y = f(f(y));}return gcd(p, n);}vector<ll> factor(ll n) {if(n == 1)return {};if(isprime(n))return {n};ll a = pollard(n);assert(a != n && a != 1);auto l = factor(a), r = factor(n / a);l.insert(l.end(), r.begin(), r.end());return l;}};int main() {cin.tie(0);ios::sync_with_stdio(false);ll A, B;cin >> A >> B;ll g = gcd(A, B);factorise f;auto v = f.factor(g);map<ll, ll> cnt;for(auto i : v) {cnt[i]++;}ll n = 1;for(auto p : cnt) {n *= (p.second + 1);}cout << (n % 2 ? "Odd" : "Even") << endl;}