結果
問題 |
No.443 GCD of Permutation
|
ユーザー |
![]() |
提出日時 | 2025-01-28 09:42:55 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 1,000 ms |
コード長 | 811 bytes |
コンパイル時間 | 2,066 ms |
コンパイル使用メモリ | 195,636 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2025-01-28 09:42:59 |
合計ジャッジ時間 | 3,401 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 28 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 10; string n; bool vis[20]; bool is_div(string num, ll mod) { ll now = 0; for (int i = 0; i < (int)num.size(); i++) { now = now * 10 + num[i] - '0'; now %= mod; } return (now == 0); } ll gcd(ll a, ll b) { if (b == 0) return a; return gcd(b, a % b); } int main() { // freopen("gcd.in", "r", stdin); // freopen("gcd.out", "w", stdout); cin >> n; for (int i = 0; i < (int)n.size(); i++) vis[n[i] - '0'] = true; ll g = 0; for (int i = 0; i <= 9; i++) for (int j = 0; j < i; j++) if (vis[i] && vis[j]) g = gcd(g, 9 * (i - j)); if (!g) { cout << n << endl; return 0; } for (ll i = g; i >= 1; i--) { if (g % i == 0 && is_div(n, i)) { cout << i << endl; return 0; } } return 0; }