#include <stdio.h>
int arr[8] = { 2,3,5,7,11,13,17 };
double a, b, ans;
double result_PA, result_PB, Combinum, P1, P2;
double Combi(int i);
double P(int i, double p);
int main(void)
{
int test_case;
int T;
int A, B;
freopen("input.txt", "r", stdin);
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
scanf("%d %d", &A, &B); // 두사람 확률 A 80, B 90
ans = 0, result_PA = 0, result_PB = 0;
a = (double)A / 100; // 확률 A 0.8
b = (double)B / 100; // 확률 B 0.9
for (int i = 0; i < 7; i++)
{
result_PA += (Combi(arr[i]) * P(arr[i], a));
result_PB += (Combi(arr[i]) * P(arr[i], b));
}
ans = result_PA + result_PB - result_PA * result_PB; // P(A)+P(B) - P(A)*P(B) 확률의 덧셈정리
printf("#%d %.6lf\n", test_case, ans);
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
double Combi(int i)
{
Combinum = 1;
if (i == 17) return 18;
if (i > 9) i = 18 - i;
for (int k = 0; k < i; k++)
{
Combinum *= (18 - k);
}
for (int k = i; k >= 1; k--)
{
Combinum /= k;
}
return Combinum;
}
double P(int i, double p)
{
P1 = 1;
for (int k = 0; k < i; k++) // 확률 p를 완제품 수 만큼
{
P1 *= p;
}
for (int k = 0; k < 18 - i; k++) // 확률 1-p를 미완제품 수 만큼
{
P1 *= (1 - p);
}
return P1;
}
댓글