結果
問題 | No.1312 Snake Eyes |
ユーザー |
![]() |
提出日時 | 2020-12-10 16:40:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 22 ms / 2,000 ms |
コード長 | 1,074 bytes |
コンパイル時間 | 663 ms |
コンパイル使用メモリ | 92,936 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 13:06:15 |
合計ジャッジ時間 | 2,808 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 85 |
ソースコード
/* -*- coding: utf-8 -*-** 1312.cc: No.1312 Snake Eyes - yukicoder*/#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<string>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<deque>#include<algorithm>#include<numeric>#include<utility>#include<complex>#include<functional>using namespace std;/* constant */const long long LINF = 1LL << 62;/* typedef */typedef long long ll;/* global variables *//* subroutines *//* main */int main() {ll n;scanf("%lld", &n);// k >= 3ll s;for (int p = 2; (s = 1 + p + (ll)p * p) <= n; p++) {while (s <= n) {if (n % s == 0 && n / s < p) {printf("%d\n", p);return 0;}s = s * p + 1;}}// k == 2ll minp = LINF;for (int d = 1; (ll)d * d <= n; d++)if (n % d == 0) {ll m = n / d;ll p2 = m - 1;if (p2 > d && minp > p2) minp = p2;}// k == 1if (minp >= LINF) minp = n + 1;printf("%lld\n", minp);return 0;}