fork download
  1. import scala.collection.mutable.ArrayBuffer
  2.  
  3. object Main extends App {
  4.  
  5. class Rational(val p: BigInt, val q: BigInt) {
  6.  
  7. def +(that: Rational) = Rational(p * that.q + q * that.p, q * that.q)
  8.  
  9. def *(that: Rational) = Rational(p * that.p, q * that.q)
  10.  
  11. def toDouble = p.toDouble / q.toDouble
  12.  
  13. override def toString = s"$p/$q"
  14. }
  15.  
  16. object Rational {
  17. def apply(p: BigInt, q: BigInt): Rational = {
  18. require(q != 0)
  19. val d = p gcd q
  20. new Rational(p / d, q / d)
  21. }
  22.  
  23. def apply(n: BigInt): Rational = Rational(n, 1)
  24. }
  25.  
  26. val l = ArrayBuffer(Rational(1))
  27. for (n <- 1 to 100)
  28. l += l.last * Rational(100 - n, 100)
  29.  
  30. println((1 to 100).map(n => (n, (l(n - 1) * Rational(n, 100)).toDouble)).maxBy(_._2))
  31. }
  32.  
Success #stdin #stdout 0.45s 4382720KB
stdin
Standard input is empty
stdout
(10,0.06281565095552948)