結果
問題 | No.550 夏休みの思い出(1) |
ユーザー | 6soukiti29 |
提出日時 | 2017-08-02 20:25:13 |
言語 | Nim (2.0.2) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,851 bytes |
コンパイル時間 | 816 ms |
コンパイル使用メモリ | 65,584 KB |
最終ジャッジ日時 | 2024-11-14 20:11:16 |
合計ジャッジ時間 | 1,154 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
/home/judge/data/code/Main.nim(25, 12) Error: type mismatch Expression: pow(F, Complex((1 / 3, 0.0))) [1] F: Complex [2] Complex((1 / 3, 0.0)): Complex Expected one of (first mismatch at [position]): [1] func pow(x, y: float32): float32 [1] func pow(x, y: float64): float64 [1] func pow[T](x, y: Complex[T]): Complex[T] [1] func pow[T](x: Complex[T]; y: T): Complex[T]
ソースコード
import math,complex,strutils,sequtils,algorithm proc `^`[T](x : T,i : int):T = if i == 1: return x elif i == 0: return 1 elif i mod 2 == 0: return (x * x) ^ (i div 2) else: return ((x * x) ^ (i div 2)) * x type Complex = tuple[re,im : float64] proc solve3equation(a,b,c,d : float64):tuple[s,t,u : Complex]= var D = (-27 * a ^ 2 * d + 9 * a * b * c - 2 * b ^ 3) ^ 2 + 4 * (3 * a * c - b ^ 2) ^ 3 var F,g,h : Complex var sq3 : float64 sq3 = pow(2.0.float64, 1.float64 / 3.float64) if D < 0: F = ( - 27 * a ^ 2 * d + 9 * a * b * c - 2 * b ^ 3, sqrt(abs(D))) else: F = ( - 27 * a ^ 2 * d + 9 * a * b * c - 2 * b ^ 3 + sqrt(D),0.0) F = pow(F, (1 / 3, 0.0).Complex) result.s = F / (3 * pow(2.0, 1 / 3) * a) - sq3 * (3 * a * c - b * b) / (3 * a * F) - b / (3 * a) g = (1.0,sqrt(3.0)) h = (1.0,-sqrt(3.0)) result.t = - F * h / (6 * sq3 * a) + g * (3 * a * c - b * b) / (3 * sq3 ^ 2 * a * F) - b / (3 * a) result.u = - F * g / (6 * sq3 * a) + h * (3 * a * c - b * b) / (3 * sq3 ^ 2 * a * F) - b / (3 * a) var a,b,c : int64 x1,x2,x3 : Complex s,t,u : int64 (a,b,c) = stdin.readline.split.map(parseBiggestInt) (x1,x2,x3) = solve3equation(1.0,a.float64,b.float64,c.float64) (s,t,u) = (x1.re.int64,x2.re.int64,x3.re.int64) var ans = newSeq[int](3) block hosei: for i in -4..4: for j in -4..4: for k in -4..4: var s2 = s + i t2 = t + j u2 = u + k if (s2 * t2 * u2 == - c and s2 * t2 + t2 * u2 + u2 * s2 == b and s2 + t2 + u2 == - a): (ans[0],ans[1],ans[2]) = (s2.int,t2.int,u2.int) break hosei ans.sort(system.cmp) echo ans.join(" ")