hdu 1410PK武林盟主

http://acm.hdu.edu.cn/showproblem.php?pid=1410

PK武林盟主

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 704    Accepted Submission(s): 155


Problem Description
枫之羽认为自己很强,想当武林盟主,于是找现任武林盟主氢氧化铜挑战。氢氧化铜欣然接受了挑战,两人约好于下个月的月圆之夜在HDU校园内的三根柱子上进行决战。这场PK赛肯定能吸引武林中所有人前来观战,所以他们找了有商业运作潜力的经济人你,让你来组织这场百年一见的世纪之战,假设两人都有一定的血HP1、HP2.HP1是枫之羽的,HP2是氢氧化铜的。他们也有一定攻击力AP1、AP2,AP1是枫之羽的,AP2是氢氧化铜的。当进行攻击时,对方的HP减少自己的攻击力,比如HP1=2 HP2=1 AP1=1 AP2=1,当氢氧化铜攻击枫之羽时,枫之羽的HP=2(原先的HP1)-1(氢氧化铜的AP2)=1。现在两个人对决很多回合,每回合不是枫之羽攻击氢氧化铜,就是氢氧化铜攻击枫之羽。求枫之羽能赢氢氧化铜成为下任武林盟主的的胜率。
 
Input
该题含有多组测试数据,每行为HP1,HP2,AP1和AP2 (1<=HP1,HP2,AP1,AP2<=32767)
 
Output
每组数据输出一行,为枫之羽赢氢氧化铜概率的值 (结果保留4位小数).
 
Sample Input
2 1 1 1
 
Sample Output
75.0000
 
Author
Eddy
 
 
 
对i=0到i<=n2-1
P(i) = C(N1+i-1,i)*(0.5)^(N1+i)
n2种概率情况之和,用log10处理大数据。
log10(P(i+1)) - log10(P(i)) = log10(N1+i)-log10(i+1)+log10(0.5)
 先把小的求出来,后面的用到前面的
 
for(i=0;i<n2;i++)
          {
                sum+=pow(10,t+(n1+i)*log10(1/2.0));
                t+=log10((n1+i)*1.0/(i+1));
          }
 
原文地址:https://www.cnblogs.com/1114250779boke/p/2754368.html