結果
| 問題 | No.356 円周上を回る3つの動点の一致 | 
| コンテスト | |
| ユーザー |  negistel | 
| 提出日時 | 2016-05-15 23:52:46 | 
| 言語 | Scala(Beta) (3.6.2) | 
| 結果 | 
                                CE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 945 bytes | 
| コンパイル時間 | 9,969 ms | 
| コンパイル使用メモリ | 291,836 KB | 
| 最終ジャッジ日時 | 2024-11-14 19:44:47 | 
| 合計ジャッジ時間 | 10,679 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge2 | 
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
            
            
            
            
            ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
[31m[31m-- [E006] Not Found Error: Main.scala:18:46 ------------------------------------[0m[0m [31m18 |[0m [33mval[0m Array(a, b, c) = ([31m0[0m until [31m3[0m).map(_ => readLong).toArray [31m[31m |[0m ^^^^^^^^[0m [31m |[0m Not found: readLong [31m |[0m [31m |[0m longer explanation available when compiling with `-explain` [31m[31m-- [E172] Type Error: Main.scala:18:63 -----------------------------------------[0m[0m [31m18 |[0m [33mval[0m Array(a, b, c) = ([31m0[0m until [31m3[0m).map(_ => readLong).toArray [31m[31m |[0m ^[0m [31m |[0m No ClassTag available for B [31m |[0m [31m |[0m where: B is a type variable [31m[31m-- [E172] Type Error: Main.scala:21:29 -----------------------------------------[0m[0m [31m21 |[0m [33mval[0m [36ml[0m = lcm(ab._2, bc._2) [31m[31m |[0m ^[0m [31m |[0mAmbiguous given instances: both [33mobject[0m [35mBigIntIsIntegral[0m in [33mobject[0m [35mNumeric[0m and [33mobject[0m [35mCharIsIntegral[0m in [33mobject[0m [35mNumeric[0m match type Integral[T] of parameter ev of [33mmethod[0m [35mlcm[0m in [33mobject[0m [35mMain[0m [31m[31m-- [E172] Type Error: Main.scala:24:62 -----------------------------------------[0m[0m [31m24 |[0m [33mval[0m (numerator, denominator) = reduceRational(l, gcd(x, y)) [31m[31m |[0m ^[0m [31m |[0mAmbiguous given instances: both [33mobject[0m [35mBigIntIsIntegral[0m in [33mobject[0m [35mNumeric[0m and [33mobject[0m [35mCharIsIntegral[0m in [33mobject[0m [35mNumeric[0m match type Integral[T] of parameter ev of [33mmethod[0m [35mgcd[0m in [33mobject
ソースコード
import scala.math.Integral
object Main {
  def gcd[T](a: T, b: T)(implicit ev: Integral[T]): T = b match {
    case 0 => a
    case _ => gcd(b, ev.rem(a, b))
  }
  def lcm[T](a: T, b: T)(implicit ev: Integral[T]): T = ev.times(ev.quot(a, gcd(a, b)), b)
  def gcd[T](s: Seq[T])(implicit ev: Integral[T]): T = s.reduce(gcd[T])
  def lcm[T](s: Seq[T])(implicit ev: Integral[T]): T = s.reduce(lcm[T])
  def reduceRational[T](a: T, b: T)(implicit ev: Integral[T]): (T, T) = (ev.quot(a, gcd(a, b)), ev.quot(b, gcd(a, b)))
  def main(args: Array[String]): Unit = {
    val Array(a, b, c) = (0 until 3).map(_ => readLong).toArray
    val ab = reduceRational((a - b).abs, a * b)
    val bc = reduceRational((b - c).abs, b * c)
    val l = lcm(ab._2, bc._2)
    val x = ab._1 * l / ab._2
    val y = bc._1 * l / bc._2
    val (numerator, denominator) = reduceRational(l, gcd(x, y))
    println(numerator.toString + '/' + denominator.toString)
  }
}
            
            
            
        