結果
| 問題 |
No.25 有限小数
|
| コンテスト | |
| ユーザー |
kohaku_kohaku
|
| 提出日時 | 2016-12-09 23:18:22 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 140 ms / 5,000 ms |
| コード長 | 1,179 bytes |
| コンパイル時間 | 2,331 ms |
| コンパイル使用メモリ | 77,952 KB |
| 実行使用メモリ | 41,764 KB |
| 最終ジャッジ日時 | 2024-11-28 20:17:36 |
| 合計ジャッジ時間 | 7,631 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
ソースコード
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long N = sc.nextLong();
long M = sc.nextLong();
long gcd = gcd(N,M);
N/=gcd;
M/=gcd;
long ans = ans(N,M);
System.out.println(ans);
}
static long gcd(long x, long y){
while(true){
long z=x%y;
if(z==0){break;}
x=y;
y=z;
}
return y;
}
static int ans(long N, long M){
long t=M;
while(t%2==0){
t/=2;
}
while(t%5==0){
t/=5;
}
int r=-1;
if(t==1){
BigDecimal x = new BigDecimal(N);
BigDecimal y = new BigDecimal(M);
BigDecimal z = x.divide(y, 1000, BigDecimal.ROUND_UNNECESSARY);
String w = z.toPlainString();
for(int i=w.length()-1; i>=0; i--){
int A = w.charAt(i);
if(A!='0'&&A!='.'){
r=w.charAt(i)-'0';
break;
}
}
}
return r;
}
}
kohaku_kohaku