結果
| 問題 |
No.2 素因数ゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-02-27 20:48:56 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,737 bytes |
| コンパイル時間 | 1,820 ms |
| コンパイル使用メモリ | 176,848 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-09-29 12:09:04 |
| 合計ジャッジ時間 | 2,825 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
ソースコード
#if 1
#ifdef INCLUDED_MAIN
cint maxN{ (int)1e8 };
vector<int> num;
vector<int> prime;
vector<bool> is_prime;
int sieve(int n) {
prime.reserve(n / 2);
is_prime.resize(n, true);
is_prime[0] = is_prime[1] = false;
for (int i{ 2 }; i < n; ++i) {
if (!is_prime[i])continue;
prime.push_back(i);
for (int j{ i * 2 }; j < n; j *= i)is_prime[j] = false;
}
return prime.size();
}
int main() {
REDIRCT_IO;
int N;
cin >> N;
int p{ sieve((int)sqrt(N) + 1) };
num.resize(p + 1);
rep(i, p) {
while (N % prime[i] == 0) { N /= prime[i]; ++num[i]; }
}
if (N != 1)num[p] = 1;
int x{ 0 };
for (int i{ 0 }; i<=p; ++i) x ^= num[i];
cout << (x ? "Alice" : "Bob") << endl;
RESTORE_IO;
return 0;
}
#else
#include<bits/stdc++.h>
#ifdef _INTEGRAL_MAX_BITS
#include"C:\Users\Spare\source\repos\Competitive_programming\Competitive_programming\debugging.h"
#endif
#ifndef DEBUGGING
#define MY_MAIN int main()
#define REDIRCT_IO ;
#define RESTORE_IO ;
#endif
#define sc static
#define ct const
#define ft first
#define sd second
using namespace std;
using ld = long double;
using ll = long long;
using cchar = const char;
using cint = const int;
using cll = const ll;
using uchar = unsigned char;
using uint = unsigned int;
using ull = unsigned long long;
using cuchar = const uchar;
using cuint = const uint;
using cull = const ull;
template<class TYPE> static const TYPE INF = numeric_limits<TYPE>::max();
#define rep(i, n) for(int i = (0), fend = n; i < fend; ++i)
static const string ascii_lowercase = "abcdefghijklmnopqrstuvwxyz";
static const string ascii_uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
#define INCLUDED_MAIN
#include __FILE__
#endif
#endif