結果
| 問題 |
No.415 ぴょん
|
| ユーザー |
|
| 提出日時 | 2016-08-24 17:18:57 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 130 ms / 1,000 ms |
| コード長 | 838 bytes |
| コンパイル時間 | 3,681 ms |
| コンパイル使用メモリ | 79,380 KB |
| 実行使用メモリ | 54,268 KB |
| 最終ジャッジ日時 | 2024-11-18 14:30:12 |
| 合計ジャッジ時間 | 8,252 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
package No400番台;
import java.util.Scanner;
public class Q415 {
public static void main(String[] args) {
new Q415().solver();
}
void solver() {
Scanner sc = new Scanner(System.in);
long N = sc.nextLong();
long D = sc.nextLong();
System.out.println(N / Math.abs(gcd(D, N)) - 1);
}
static long gcd(long t1, long t2) {
if (Math.abs(t1) < Math.abs(t2)) {
long d = t2;
t2 = t1;
t1 = d;
}
if (t2 == 0)
return t1;
return gcd(t2, remainder(t1, t2));
}
static long remainder(long a, long b) {
long r = a % b;
if (Math.abs(r) > Math.abs(b / 2)) {
if (r > 0 && b > 0) {
r -= b;
} else if (r > 0 && b < 0) {
r += b;
} else if (r < 0 && b > 0) {
r += b;
} else if (r < 0 && b < 0) {
r -= b;
} else {
throw new AssertionError(a + " " + b);
}
}
return r;
}
}