File tree Expand file tree Collapse file tree 1 file changed +64
-0
lines changed
Expand file tree Collapse file tree 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.BufferedReader ;
3+ import java.io.IOException ;
4+ import java.io.InputStreamReader ;
5+
6+ public class Main {
7+ public static void main (String [] args ) throws IOException {
8+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
9+
10+ double A = Double . parseDouble(br. readLine()) / 100 ;
11+ double B = Double . parseDouble(br. readLine()) / 100 ;
12+
13+ double [][][] dp = new double [19 ][19 ][19 ];
14+
15+ dp[0 ][0 ][0 ] = 1.0 ;
16+
17+ for (int i = 1 ; i < 19 ; i++ ) {
18+ for (int j = 0 ; j <= i; j++ ) {
19+ for (int k = 0 ; k <= i; k++ ) {
20+ if (j > 0 ) { // A팀
21+ dp[i][j][k] += dp[i - 1 ][j - 1 ][k] * A * (1 - B );
22+ }
23+ if (k > 0 ) { // B팀
24+ dp[i][j][k] += dp[i - 1 ][j][k - 1 ] * (1 - A ) * (B );
25+ }
26+
27+ if (j > 0 && k > 0 ) { // A팀, B팀
28+ dp[i][j][k] += dp[i - 1 ][j - 1 ][k - 1 ] * A * B ;
29+ }
30+
31+ // 둘 다 넣지 않을 경우
32+ dp[i][j][k] += dp[i - 1 ][j][k] * (1 - A ) * (1 - B );
33+ }
34+ }
35+ }
36+
37+ double answer = 0 ;
38+
39+ for (int i = 0 ; i < 19 ; i++ ) {
40+ for (int j = 0 ; j < 19 ; j++ ) {
41+ if (isPrime(i) || isPrime(j)) {
42+ answer += dp[18 ][i][j];
43+ }
44+ }
45+ }
46+
47+ System . out. printf(" %.16f" , answer);
48+ }
49+
50+ static boolean isPrime (int num ) {
51+ if (num < 2 ) {
52+ return false ;
53+ }
54+
55+ for (int i = 2 ; i * i <= num; i++ ) {
56+ if (num % i == 0 ) {
57+ return false ;
58+ }
59+ }
60+
61+ return true ;
62+ }
63+ }
64+ ```
You can’t perform that action at this time.
0 commit comments