문제
1344번: 축구
홍준이는 축구 경기를 보고 있다. 그러다가 홍준이는 역시 두 팀 중 적어도 한 팀이 골을 소수로 득점할 확률이 궁금해 졌다. 축구 경기는 90분동안 이루어지고, 분석을 쉽게하기 위해서 경기를 5
www.acmicpc.net
코드
#include<bits/stdc++.h>
using namespace std;
const int n = 18;
double perA, perB, dp[20][20][20];
bool isPrime(int n)
{
if (n == 0 || n == 1)
return false;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
return false;
}
return true;
}
double go(int idx, int x, int y)
{
if (idx == n)
return isPrime(x) || isPrime(y) ? true : false;
double& ret = dp[idx][x][y];
if (ret > -0.5)
return ret;
ret = 0.0;
ret += go(idx + 1, x + 1, y) * perA * (1 - perB);
ret += go(idx + 1, x + 1, y + 1) * perA * perB;
ret += go(idx + 1, x, y + 1) * (1 - perA) * perB;
ret += go(idx + 1, x, y) * (1 - perA) * (1 - perB);
return ret;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> perA >> perB;
perA *= 0.01, perB *= 0.01;
memset(dp, -1, sizeof(dp));
cout << go(0, 0, 0) << "\n";
return 0;
}
'개발 > 알고리즘' 카테고리의 다른 글
백준 17070 파이프옮기기1 C++ (0) | 2021.04.18 |
---|---|
백준 1647 도시 분할 계획 C++ (0) | 2021.04.17 |
백준 4781번 사탕가게 C++ (0) | 2021.04.16 |
백준 2470 두 용액 C++ (0) | 2021.04.13 |
백준 4811번 알약 C++ (0) | 2021.04.13 |