o.boj 1506 分糖果

注:最近这一系列ACM的内容,都是2年多之前的代码,自己回顾一下。
 
 
分糖果
 
Submit: 387    Accepted:208
Time Limit: 2000MS  Memory Limit: 65535K
Description
曾几何时,当xiaoming没有出道之前,也就是进入ACM集训队之前.他也有过灰暗的过去, 由于他在数学方面的先天不足,所以学习起概率论来十分吃力.看着别人都九十几分,而自己却有挂料的危险,xiaoming很是难过.但是他相信,勤能补拙,笨鸟先飞,早起的鸟儿有虫吃等一系列的名言警句.于是他那时每天早上六点起床(对于现在的他来说几乎是不可能的了),学习概率.终于他的努力得到了回报,他的概率论竟然过了.
现在cloudiris也在学概率了,她有一份作业要做,她非常希望这一次作业能够全对(据说这次作业成绩占了总成绩的60%,如果她拿到满分就不用担心挂课了)。这是一个实践题目,要求自己设计一个问题,现在cloudiris尽全力把题目设计的简单了,但是她自己还是不会解,于是非常希望xiaoming学长能够帮她,可是xiaoming把概率论已经忘光了,现在你能帮cloudiris吗?
Cloudiris给912幼儿园n个小朋友分糖果,每个小朋友会有一个喜好(可能是红糖果也可能是白糖果)。初始时糖果袋中有r颗红糖果,t颗白糖果,每次从袋中随机任取一颗糖果,记住这颗糖果的颜色后把糖果放回,并由xiaoming再加入a只与所取糖果不同色的糖果。取完n次后分给第i个小朋友一颗和第i次取出糖果颜色相同的糖果。问最后所有小朋友都拿到自己喜欢的糖果的概率。 


Input
第一行为一个整数T,表示测试数据的组数.
每组数据3行
第一行有一个正整数n(1 <= n <= 30),表示有n个小朋友。
第二行有n个数,第i个数表示第i个小朋友喜欢的糖果颜色。0表示红糖果,1表示白糖果。
最后一行3个整数r,t,a,如题目中所述定义(n <= r , t <= 100 , 0 < a <= 100)


Output
对于每组数据,输出小朋友都拿到自己喜欢的糖果的概率。 (保留3位小数)


Sample Input

1
2
1 0
1 1 1


Sample Output

0.333


Source
cloudiris
 
#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
   int T, n, r, t, a;
   int c[31];
   double p;
   cin >> T;
   while (T--)
   {
      cin >> n;
      for (int i = 0; i < n; i++)
        cin >> c[i];
      
      cin >> r >> t >> a;
      p = 1.0;
      for (int i = 0; i < n; i++)
      {
         if (c[i])
         {
            p *= (double)t/(double)(r+t);
            r += a;
         }
         else
         {
            p *= (double)r/(double)(r+t);
            t += a;
         }
      }
      
      printf("%.3f\n", p);   
   }
   
   // system("pause");
   return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值