結果
問題 | No.456 Millions of Submits! |
ユーザー |
![]() |
提出日時 | 2017-01-02 21:23:08 |
言語 | D (dmd 2.109.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 680 bytes |
コンパイル時間 | 2,964 ms |
コンパイル使用メモリ | 153,856 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-12 06:14:07 |
合計ジャッジ時間 | 7,041 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | WA * 13 |
コンパイルメッセージ
Main.d(19): Deprecation: template `std.math.operations.approxEqual(T, U, V)(T value, U reference, V maxRelDiff = 0.01, V maxAbsDiff = 1e-05)` is deprecated - approxEqual will be removed in 2.106.0. Please use isClose instead. Main.d(33): instantiated from here: `solveEquation!real` Main.d(21): Deprecation: template `std.math.operations.approxEqual(T, U, V)(T value, U reference, V maxRelDiff = 0.01, V maxAbsDiff = 1e-05)` is deprecated - approxEqual will be removed in 2.106.0. Please use isClose instead. Main.d(33): instantiated from here: `solveEquation!real`
ソースコード
import std.algorithm.iteration; import std.conv; import std.math; import std.numeric; import std.stdio; import std.string; const real EPS = 1e-9; T lambertW(T)(T x, T tol=EPS) { auto f = (T t) => t * exp(t) - x; return secantMethod!(f)(0.0f, 1.0f); } T solveEquation(T)(T a, T b, T t, T tol=EPS){ if (approxEqual(a, 0, EPS)){ return exp(pow(t, 1 / b)); } else if (approxEqual(b, 0, EPS)) { return pow(t, 1 / a); } else { return exp(b / a * lambertW(a / b * pow(t, 1 / b))); } } void main(){ auto m = readln.chomp.to!int; foreach (i; 0..m) { auto s = readln.split.map!(to!real); auto res = solveEquation(s[0], s[1], s[2]); writefln("%.10f\n", res); } }