当前位置:Gxlcms > mysql > CodeforcesRound(Div.2)B.DreamoonandWiFi(超几何

CodeforcesRound(Div.2)B.DreamoonandWiFi(超几何

时间:2021-07-01 10:21:17 帮助过:10人阅读

题目链接:Codeforces Round #273 (Div. 2) B. Dreamoon and WiFi 题意:“”表示前进1个单位,“-”表示后退1个单位,问以0为起点经过S1,S2两个命令后达到的位置相同的概率。 思路:统计“”和“-”的数量。如果S2中的“”或者“-”比S1中的多,概率是0。

题目链接:Codeforces Round #273 (Div. 2) B. Dreamoon and WiFi

题意:“+”表示前进1个单位,“-”表示后退1个单位,问以0为起点经过S1,S2两个命令后达到的位置相同的概率。

思路:统计“+”和“-”的数量。如果S2中的“+”或者“-”比S1中的多,概率是0。其他条件下,形成的是超几何分布。

AC代码:

  1. #include <stdio.h>
  2. #include <string.h>
  3. int fac(int n,int m)
  4. {
  5. int i,s=1;
  6. for(i=m;i>m-n;i--)
  7. s*=i;
  8. return s;
  9. }
  10. int C(int n,int m)
  11. {
  12. int a=fac(n,m);
  13. int b=fac(n,n);
  14. return a/b;
  15. }
  16. double ipow(double n,int p)
  17. {
  18. int i;
  19. double s=1.0;
  20. for(i=0;i<p;i++) s*="n;" return="" s;="" }="" int="" main()="" {="" char="" s1[20],s2[20];="" len,i;="" while(scanf("%s",s1)!="EOF)" len="strlen(s1);" addsum,subsum;="" addsum="subsum=0;" for(i="0;i<len;i++)" if(s1[i]="='+')" addsum++;="" else="" subsum++;="" scanf("%s",s2);="" m="0,pos=0,sum;" if(s2[i]="='?')" m++;="" addsum--;="" subsum--;="" if(addsum<0="" ||="" subsum<0)="" printf("%.9lf\n",0);="" if(addsum+subsum!="m)" double="" ans;="" ans="ipow(0.5,m)*C(addsum,m);" printf("%.9lf\n",ans);="" 0;="" *="" ++++++++++="" +++??++?++="" --+++---+-="" ??????????="" <="" script=""></p;i++)></string.h></stdio.h>

人气教程排行