結果
| 問題 |
No.456 Millions of Submits!
|
| コンテスト | |
| ユーザー |
bal4u
|
| 提出日時 | 2019-07-29 09:39:40 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 598 ms / 4,500 ms |
| コード長 | 1,124 bytes |
| コンパイル時間 | 347 ms |
| コンパイル使用メモリ | 32,640 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-02 15:14:32 |
| 合計ジャッジ時間 | 9,435 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 |
コンパイルメッセージ
main.c: In function 'in':
main.c:8:14: warning: implicit declaration of function 'getchar_unlocked' [-Wimplicit-function-declaration]
8 | #define gc() getchar_unlocked()
| ^~~~~~~~~~~~~~~~
main.c:14:24: note: in expansion of macro 'gc'
14 | int n = 0, c = gc();
| ^~
ソースコード
// yukicoder: No.456 Millions of Submits!
// 2019.7.29 bal4u
#include <stdio.h>
#include <math.h>
#if 1
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif
int in() { // 非負整数の入力
int n = 0, c = gc();
do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0');
return n;
}
double getdbl() { // 正実数の入力
double x, y;
int n = 0, c = gc();
do n = 10*n + (c & 0xf), c = gc(); while (c >= '0');
if (c == '.') {
x = 0, y = 1, c = gc();
do y *= 0.1, x += y * (c & 0xf), c = gc(); while (c >= '0');
x += n;
} else x = n;
return x;
}
#define EPS 1e-10
int a, b; double t;
double logt, logn;
double f(double n) { logn = log(n); return a*logn + b*log(logn) - logt; }
double d(double n) { return (a + b/logn)/n; }
int main()
{
int m; double ans, n, fn;
m = in(); while (m--) {
a = in(), b = in(), t = getdbl();
if (a == 0) ans = exp(pow(t, 1.0/b));
else if (b == 0) ans = pow(t, 1.0/a);
else {
logt = log(t), n = 3.0;
while (fabs(fn = f(n)) > EPS) {
n -= fn/d(n);
while (n <= 1.0) n += 0.2;
}
ans = n;
}
printf("%.10lf\n", ans);
}
return 0;
}
bal4u