Comment detail

分数を小数に展開 (Nested Flatten)
こんなところでしょうか
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.Map;
import java.util.HashMap;

public class Fraction {
	
	public static String toRepeatingDecimal(int numerator, int denominator) {
		Map<Integer, Integer> remainders = new HashMap<Integer, Integer>();
		long d, q, r;
		int i = 0;
		StringBuffer sb = new StringBuffer();
		d = denominator;
		r = numerator;
		q = r / d;
		r = r % d;
		remainders.put((int)r, i++);
		r *= 10;
		sb.append(q);
		if (r > 0) {
			sb.append('.');
			do {
				q = r / d;
				r = r % d;
				sb.append(q);
				Integer index = remainders.get((int)r);
				if (index != null) {
					sb.insert(sb.length() - i + index, '{');
					sb.append('}');
					break;
				}
				remainders.put((int)r, i++);
				r *= 10;
			} while (r > 0);
		}
		return sb.toString();
	}
	
}

Index

Feed

Other

Link

Pathtraq

loading...