結果

問題 No.456 Millions of Submits!
ユーザー はむ吉🐹
提出日時 2017-01-02 21:26:37
言語 D
(dmd 2.109.1)
結果
WA  
実行時間 -
コード長 675 bytes
コンパイル時間 3,041 ms
コンパイル使用メモリ 158,464 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-06-12 06:14:34
合計ジャッジ時間 8,202 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`

ソースコード

diff #

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 findRoot(f, -1.0f, 10f);
}


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("%.11f\n", res);
	}
}
0