結果
| 問題 | 
                            No.66 輝け☆全国たこやき杯
                             | 
                    
| コンテスト | |
| ユーザー | 
                             htensai
                         | 
                    
| 提出日時 | 2020-02-10 12:32:19 | 
| 言語 | Java  (openjdk 23)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 180 ms / 5,000 ms | 
| コード長 | 724 bytes | 
| コンパイル時間 | 1,785 ms | 
| コンパイル使用メモリ | 77,928 KB | 
| 実行使用メモリ | 42,852 KB | 
| 最終ジャッジ日時 | 2024-10-01 06:20:38 | 
| 合計ジャッジ時間 | 3,757 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 10 | 
ソースコード
import java.util.*;
public class Main {
	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		double[] powers = new double[1 << m];
		for (int i = 0; i < (1 << m); i++) {
		    powers[i] = Math.pow(sc.nextInt(), 2);
		}
		double[][] dp = new double[m + 1][1 << m];
		Arrays.fill(dp[0], 1.0);
		for (int i = 1; i <= m; i++) {
		    for (int j = 0; j < (1 << m); j++) {
		        int base = ((j >> (i - 1)) ^ 1) << (i - 1);
		        for (int k = 0; k < (1 << (i - 1)); k++) {
		            dp[i][j] += dp[i - 1][base + k] * (powers[j] / (powers[j] + powers[base + k]));
		        }
		        dp[i][j] *= dp[i - 1][j];
		    }
		}
		System.out.println(dp[m][0]);
   }
}
            
            
            
        
            
htensai