結果
問題 | No.1312 Snake Eyes |
ユーザー |
![]() |
提出日時 | 2020-12-09 01:38:40 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 153 ms / 2,000 ms |
コード長 | 975 bytes |
コンパイル時間 | 2,308 ms |
コンパイル使用メモリ | 199,472 KB |
最終ジャッジ日時 | 2025-01-16 20:26:34 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 85 |
ソースコード
#include <bits/stdc++.h> using namespace std; using pint = pair<int,int>; #define REP(i, n) for (long long i = 0; i < (long long)(n); ++i) #define REP2(i, a, b) for (long long i = a; i < (long long)(b); ++i) int main() { long long N; cin >> N; auto solve = [&]() -> long long { if (N == 1) return 2; if (N == 2) return 3; for (long long p = 2; p * p <= N; ++p) { vector<long long> digit; long long N2 = N; while (N2) { digit.push_back(N2 % p); N2 /= p; } sort(digit.begin(), digit.end()); if (digit[0] == digit.back()) return p; } long long res = max(N-1, 2LL); for (long long a = 1; a * a <= N; ++a) { if (N % a != 0) continue; long long p = N / a - 1; if (a >= p) continue; res = min(res, p); } return res; }; cout << solve() << endl; }