結果
| 問題 |
No.443 GCD of Permutation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-11-12 01:02:17 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,184 bytes |
| コンパイル時間 | 3,366 ms |
| コンパイル使用メモリ | 77,440 KB |
| 実行使用メモリ | 54,448 KB |
| 最終ジャッジ日時 | 2024-11-25 10:45:01 |
| 合計ジャッジ時間 | 8,790 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 23 WA * 5 |
ソースコード
import java.io.PrintStream;
import java.util.Scanner;
public class Y443 {
Scanner in = new Scanner(System.in);
PrintStream out = new PrintStream(System.out);
Y443() throws Exception {
String s = in.next();
boolean[] flag = new boolean[10];
if (isRepetitive(s)) {
out.println(s);
return;
}
for (int i = 0; i < s.length(); i++) {
flag[s.charAt(i) - '0'] = true;
}
long g = 0;
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j < 10; j++) {
if (flag[i] && flag[j]) {
g = gcd(g, 9 * (j - i));
}
}
}
for (int i = (int)g; i>0; i--) {
if (g % i == 0 && divisible(s, i)) {
out.println(i);
return;
}
}
}
boolean isRepetitive(String s) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(0) != s.charAt(i)) {
return false;
}
}
return true;
}
boolean divisible(String s, int x) {
int r = 0;
for (int i = 0; i < s.length(); i++) {
r = (r + s.charAt(i) - '0') % x;
}
return r == 0;
}
long gcd(long x, long y) {
while (y > 0) {
x %= y;
long t = x; x = y; y = t;
}
return x;
}
public static void main(String argv[]) throws Exception {
new Y443();
}
}