Comment detail

最大公約数(除算禁止) (Nested Flatten)

既に #4790でも出てますが、Javaだと任意精度の整数値に対して使えるgcdがあるのでそれを使えます。

#4790 と同じなのもアレなので、フィボナッチ数列の計算処理もしてみました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;

public class Sample106 {
    private final Map<Integer, BigInteger> fibMemo_ = new HashMap<Integer, BigInteger>();

    public BigInteger getFibValue(int index) {
        if (index == 1 || index == 2) return BigInteger.ONE;
        BigInteger fib = fibMemo_.get(index);
        if (fib == null) {
            fib = getFibValue(index - 2).add(getFibValue(index - 1));
            fibMemo_.put(index, fib);
        }
        return fib;
    }

    public static void main(String[] args) {
        Sample106 instance = new Sample106();
        BigInteger fib1999 = instance.getFibValue(1999);
        BigInteger fib2000 = instance.getFibValue(2000);
        System.out.println(fib2000.gcd(fib1999));
    }
}

Index

Feed

Other

Link

Pathtraq

loading...