結果
| 問題 |
No.813 ユキちゃんの冒険
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-07-04 04:44:23 |
| 言語 | Java (openjdk 23) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,534 bytes |
| コンパイル時間 | 2,210 ms |
| コンパイル使用メモリ | 86,788 KB |
| 実行使用メモリ | 57,124 KB |
| 最終ジャッジ日時 | 2025-01-02 03:16:01 |
| 合計ジャッジ時間 | 6,470 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 26 |
ソースコード
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
new Main().run();
}
double Z = 376.730313461;
void run() {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
double theta = sc.nextDouble();
double phi = sc.nextDouble();
double sigma = sc.nextDouble();
double pR = Z * sigma * Math.cos(theta) / (2 + Z * sigma * Math.cos(theta)) * Math.sin(phi);
double pT = 2 / (2 + Z * sigma * Math.cos(theta)) * Math.sin(phi);
double sR = Z * sigma / (2 * Math.cos(theta) + Z * sigma) * Math.cos(phi);
double sT = 2 * Math.cos(theta) / (2 * Math.cos(theta) + Z * sigma) * Math.cos(phi);
pR = Math.abs(pR);
pT = Math.abs(pT);
sR = Math.abs(sR);
sT = Math.abs(sT);
double[] pRT = calcRT(pR, pT, N);
double[] sRT = calcRT(sR, sT, N);
double R = pRT[0] * pRT[0] + sRT[0] * sRT[0];
double T = pRT[1] * pRT[1] + sRT[1] * sRT[1];
double A = 1 - R - T;
if (A > 1 || A < 0)
throw new AssertionError();
System.out.println(R + " " + T + " " + A);
}
double[] calcRT(double r, double t, int n) {
double[] a = { r, t };
double[] ans = { 0, 1 };
for (; n > 0; n >>= 1, a = merge(a, a)) {
if (n % 2 == 1) {
ans = merge(ans, a);
}
}
return ans;
}
double[] merge(double[] a, double[] b) {
double[] ret = { a[0] + a[1] * a[1] * b[0] / (1 - a[0] * b[0]), a[1] * b[1] / (1 - a[0] * b[0]) };
return ret;
}
void tr(Object... objects) {
System.out.println(Arrays.deepToString(objects));
}
}