結果
問題 | No.726 Tree Game |
ユーザー |
![]() |
提出日時 | 2019-04-25 19:27:16 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,687 bytes |
コンパイル時間 | 993 ms |
コンパイル使用メモリ | 106,736 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-11-21 07:17:16 |
合計ジャッジ時間 | 1,772 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 25 |
ソースコード
#include<iostream>#include<cstdio>#include<cstring>#include <cstdlib>#include <cmath>#include<cctype>#include<string>#include<set>#include<iomanip>#include <map>#include<algorithm>#include <functional>#include<vector>#include<climits>#include<stack>#include<queue>#include <deque>#include <climits>#include <typeinfo>#include <utility>#define all(x) (x).begin(),(x).end()#define rep(i,m,n) for(int i = m;i < n;++i)#define pb push_back#define fore(i,a) for(auto &i:a)#define rrep(i,m,n) for(int i = m;i >= n;--i)#define INF INT_MAX/2using namespace std;using ll = long long;using R = double;using Data = pair<ll, vector<int>>;const ll MOD = 1e9 + 7;const ll inf = 1LL << 50;struct edge { ll from; ll to; ll cost; };ll y, x, numy, numx, ispry, isprx;map<vector<ll>, ll>memo;bool prime(ll n) {if (n == 1) {return false;}for (ll i = 2; i*i <= n; i++) {if (n%i == 0) {return false;}}return true;}ll dfs(ll Y, ll X,ll turn,ll init) {if (memo.count({Y,X,turn}) != 0)return memo[{Y, X, turn}];if (!init) {if (Y == y && ispry)return turn;else if (X == x && isprx)return turn;}if ((Y == numy || X == numx) && !init) {return turn;}if (dfs(Y + 1, X, !turn, 0) == turn || dfs(Y, X + 1, !turn,0) == turn) {return memo[{Y,X,turn}] = turn;}else {return memo[{Y,X,turn}] = !turn;}}int main() {cin >> y >> x;numy = y+1;while (1) {if (prime(numy)) {break;}numy++;}numx = x+1;while (1) {if (prime(numx)) {break;}numx++;}ispry = prime(y);isprx = prime(x);if (dfs(y, x, 0, 1) == 0)cout << "First" << endl;else cout << "Second" << endl;return 0;}