結果

問題 No.1312 Snake Eyes
ユーザー yurujirouyurujirou
提出日時 2023-04-04 19:42:57
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 993 bytes
コンパイル時間 4,108 ms
コンパイル使用メモリ 251,072 KB
最終ジャッジ日時 2025-02-11 22:58:22
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 83 WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
using namespace std;

#include <atcoder/all>
using namespace atcoder;

#define REP(i, n) for(int i = 0; i < (int)n; i++)
#define LREP(i, n) for(LL i = 0; i < (LL)n; i++)
#define RREP(i, n) for(int i = (int)n-1; i >= 0; i--)
#define V(T) vector<T>

#define P pair<int, int>
#define LP pair<LL, LL>
#define T3 tuple<LL, LL, LL>
#define T4 tuple<LL, LL, LL, LL>
#define INF 1000000007
#define SIZE 500100
#define MOD 1000000007
typedef long long LL;

LL N;

bool check(LL p) {
	if (N < p) return true;
	LL n = N;
	LL d = N % p;
	bool res = true;
	while (n > 0) {
		if (n % p != d) res = false;
		n = (n - n % p);
		n /= p;
	}
	return res;
}

int main() {
	cin >> N;

	LL ans = N - 1;
	for (LL i = 2; i <= 1000000; i++) {
		if (check(i)) ans = min(ans, i);
	}

	for (LL i = 1; i * i <= N; i++) {
		if (N % i == 0) {
			LL j = N / i;
			LL p = j - 1;
			if (i < p) ans = min(ans, p);
		}
	}

	cout << ans << endl;
}
0