JuliaでProject Euler(13)

Problem 13

https://projecteuler.net/problem=13

多倍長整数を自作してもいいが、ここではBigIntを用いる。

function make_big_numbers()
    a = [
        "37107287533902102798797998220837590246510135740250",
        "46376937677490009712648124896970078050417018260538",
        ...
        "53503534226472524250874054075591789781264330331690",
    ]
    return [ parse(BigInt, s) for s in a ]
end

function e013()
    v = make_big_numbers()
    return string(sum(v))[1:10]
end

println(e013())

Juliaでは、勝手に多倍長整数になったりしない。

julia> 10^9 * 10^10
-8446744073709551616

IntのBigIntへの変換は次のように行う。

julia> convert(BigInt, 10^9) * 10^10
10000000000000000000