結果
| 問題 |
No.3115 One Power One Kill
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-04-20 19:58:33 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 63 ms / 2,000 ms |
| コード長 | 3,273 bytes |
| コンパイル時間 | 4,576 ms |
| コンパイル使用メモリ | 258,864 KB |
| 実行使用メモリ | 25,996 KB |
| 平均クエリ数 | 2.00 |
| 最終ジャッジ日時 | 2025-04-20 19:58:41 |
| 合計ジャッジ時間 | 7,703 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
using namespace std;
using ll = long long;
// --------------------------------------------------------
template <class T>
bool chmax(T &a, const T b) {
if (a < b) {
a = b;
return 1;
}
return 0;
}
template <class T>
bool chmin(T &a, const T b) {
if (b < a) {
a = b;
return 1;
}
return 0;
}
#define FOR(i, l, r) for (int i = (l); i < (r); ++i)
#define RFOR(i, l, r) for (int i = (r) - 1; (l) <= i; --i)
#define REP(i, n) FOR(i, 0, n)
#define RREP(i, n) RFOR(i, 0, n)
#define ALL(c) (c).begin(), (c).end()
#define RALL(c) (c).rbegin(), (c).rend()
#define SORT(c) sort(ALL(c))
#define RSORT(c) sort(RALL(c))
#define MIN(c) *min_element(ALL(c))
#define MAX(c) *max_element(ALL(c))
#define SUM(c) accumulate(ALL(c), 0LL)
#define BITCNT(c) __builtin_popcountll(c)
#define SZ(c) ((int)(c).size())
#define COUT(c) cout << (c) << '\n'
#define debug(x) cerr << #x << " = " << (x) << '\n';
using P = pair<ll, ll>;
using VP = vector<P>;
using VVP = vector<VP>;
using VS = vector<string>;
using VI = vector<int>;
using VVI = vector<VI>;
using VLL = vector<ll>;
using VVLL = vector<VLL>;
using VB = vector<bool>;
using VVB = vector<VB>;
using VD = vector<double>;
using VVD = vector<VD>;
static const double EPS = 1e-10;
static const double PI = acos(-1.0);
template <typename T>
void arrPrint(vector<T> arr) {
for (auto v : arr) cout << v << " ";
cout << '\n';
}
template <typename T>
void arrPrint2Dim(vector<vector<T>> arr) {
for (auto a : arr) arrPrint(a);
}
template <typename T, typename T2>
void arrPrintPair(vector<pair<T, T2>> arr) {
for (auto v : arr) cout << "{" << v.first << "," << v.second << "}, ";
cout << '\n';
}
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
// static const int INF = (1 << 30) - 1; // 1073741824 - 1
static const ll INF = (1LL << 62) - 1; // 4611686018427387904 - 1
ll llceil(ll a, ll b) { return (a + b - 1) / b; }
using T = tuple<ll, ll, ll>;
bool isPrime(ll n) { // is n prime or not
if (n == 1) return false;
for (ll i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
const ll mi = 100, mx = 100000;
ll A, B;
map<int, int> kToAns;
auto labo = [&]() {
bool found = false;
ll bCount = 0;
for (int b = 132; b <= 132; ++b) {
if (found) continue;
bCount++;
for (int a = 100; a <= 100; ++a) {
map<int, int> gcdToNewX;
bool ok = true;
int y = modint1000000007(a).pow(b).val();
for (int x = mx; x >= mi; --x) {
int k = gcd(x, y);
auto newX = static_modint<132>(x).pow(a);
if (gcdToNewX.count(k) && gcdToNewX[k] != newX.val()) {
ok = false;
break;
}
gcdToNewX[k] = newX.val();
}
if (ok) {
A = a;
B = b;
kToAns = gcdToNewX;
found = true;
return;
}
}
if (found) break;
}
};
labo();
ll k, result;
cout << A << " " << B << endl;
cin >> k;
cout << kToAns[k] << endl;
cin >> result;
}