結果
問題 | No.356 円周上を回る3つの動点の一致 |
ユーザー | negistel |
提出日時 | 2016-05-15 23:52:46 |
言語 | Scala(Beta) (3.4.0) |
結果 |
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) } }