Description
最近大连理工大学正在进行大规模献血活动,但是献血之前要验血,防止某某人有XX疾病。现在有N个报名参加献血,要检验一种疾病,该疾病在人群中的发生概率是p,验证该疾病的方案有两种:A:每个人都验血1次。
B : 把N给人分成每组k个人的小组(确保k整除N),把小组的血混在一起验(假设不会反应),如果是显示有病,则需要对这个小组的人每个人重新验血。如果没有病,那就全部安全。
现给你N,k,p。要求用哪种方案会使得献血次数的期望少。
Input
输入为多组数据每次输入为3个数 分别代表N(N<500),k(k<30),p(0<=p<=1)Output
每组输出一行,如果A方案次数少输出A,如B方案验血次数少就输出B。如果两个方案的次数相差小于1e-8的话,输出BOTH.Sample Input
10 2 0.5
10 2 0.01
Sample Output
A
B
#include<stdio.h> #include<math.h> int main() { int n,k; double p,ans1,ans2; while(~scanf("%d%d%lf",&n,&k,&p)) { ans1=n; ans2=(1-pow(1-p,k))*n+n/k; if(fabs(ans1-ans2)<1e-8)printf("BOTH\n"); else if(ans1-ans2>0)puts("B"); else puts("A"); } return 0; }
670

被折叠的 条评论
为什么被折叠?



