/*
import Data.Char
main = do
print . sum . map digitToInt . show . product $ [1..100000::Integer]
print . sum . map digitToInt . show $ 2 ^ (10000::Integer)
*/
def main
(args
: Array
[String
]): Unit
= { println(
(1 to 100000)
.foldLeft(BigInt(1))(_ * BigInt(_))
.toString
.map( Character.digit(_, 10) )
.foldLeft(0)(_ + _)
)
println((BigInt(2) pow 10000)
.toString
.map( Character.digit(_, 10) )
.foldLeft(0)(_ + _)
)
}
}
LyoKaW1wb3J0IERhdGEuQ2hhcgoKbWFpbiA9IGRvCglwcmludCAuIHN1bSAuIG1hcCBkaWdpdFRvSW50IC4gc2hvdyAuIHByb2R1Y3QgJCBbMS4uMTAwMDAwOjpJbnRlZ2VyXQoJcHJpbnQgLiBzdW0gLiBtYXAgZGlnaXRUb0ludCAuIHNob3cgJCAyIF4gKDEwMDAwOjpJbnRlZ2VyKQoKKi8KCmltcG9ydCBzY2FsYS5tYXRoLkJpZ0ludAoKb2JqZWN0IE1haW4gewoKICBkZWYgbWFpbihhcmdzOiBBcnJheVtTdHJpbmddKTogVW5pdCA9IHsKICAgIHByaW50bG4oCiAgICAgICgxIHRvIDEwMDAwMCkKICAgICAgICAuZm9sZExlZnQoQmlnSW50KDEpKShfICogQmlnSW50KF8pKQogICAgICAgIC50b1N0cmluZwogICAgICAgIC5tYXAoIENoYXJhY3Rlci5kaWdpdChfLCAxMCkgKQogICAgICAgIC5mb2xkTGVmdCgwKShfICsgXykKICAgICkKICAgICAgICAKICAgIHByaW50bG4oKEJpZ0ludCgyKSBwb3cgMTAwMDApCiAgICAgICAgLnRvU3RyaW5nCiAgICAgICAgLm1hcCggQ2hhcmFjdGVyLmRpZ2l0KF8sIDEwKSApCiAgICAgICAgLmZvbGRMZWZ0KDApKF8gKyBfKQogICAgKQogIH0KCn0=