UVA11021麻球繁衍
生活随笔
收集整理的這篇文章主要介紹了
UVA11021麻球繁衍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ?有K只麻球,每只生存一天就會死亡,每只麻球在死之前有可能生下一些麻球,生i個麻球的概率是pi,問m天后所有的麻球都死亡的概率是多少?
思路:
? ? ? 涉及到全概率公式,因為麻球的各種活動都互不影響,所以現在只考慮一直麻球,我們假設f[i]是第i天全部都死亡的概率,那么
f[i] = p0 + p1*f[i-1] + p2*f[i-1]^2 + ...pn-1*f[i - 1]^(n-1)
也就是用前一天的全部死亡概率來代替今天的每一只死亡的概率,又因為今天的每只的生死概率什么的都是獨立的,所以p2*f[i-1]^2可以理解成剩下2只,然后兩只都死了,這樣最后在第m天死光的概率就是f[m],但是這個只是一只麻球的,所有麻球都死光是f[m]^k。
#include<math.h>
#include<stdio.h>
#define N 1000 + 10
double P[N] ,F[N];
int main ()
{
? ?int t ,n ,m ,k ,i ,j ,cas = 1;
? ?scanf("%d" ,&t);
? ?while(t--)
? ?{
? ? ? scanf("%d %d %d" ,&n ,&k ,&m);
? ? ? for(i = 0 ;i < n ;i ++)
? ? ? scanf("%lf" ,&P[i]);
? ? ? F[0] = 0 ,F[1] = P[0];
? ? ? for(i = 2 ;i <= m ;i ++)
? ? ? {
? ? ? ? ?F[i] = 0;
? ? ? ? ?for(j = 0 ;j < n ;j ++)
? ? ? ? ?F[i] += P[j] * pow(F[i-1] ,j);
? ? ? }
? ? ? printf("Case #%d: %.7lf\n" ,cas ++ ,pow(F[m] ,k));
? ?}
? ?return 0;
}
? ?
? ? ?有K只麻球,每只生存一天就會死亡,每只麻球在死之前有可能生下一些麻球,生i個麻球的概率是pi,問m天后所有的麻球都死亡的概率是多少?
思路:
? ? ? 涉及到全概率公式,因為麻球的各種活動都互不影響,所以現在只考慮一直麻球,我們假設f[i]是第i天全部都死亡的概率,那么
f[i] = p0 + p1*f[i-1] + p2*f[i-1]^2 + ...pn-1*f[i - 1]^(n-1)
也就是用前一天的全部死亡概率來代替今天的每一只死亡的概率,又因為今天的每只的生死概率什么的都是獨立的,所以p2*f[i-1]^2可以理解成剩下2只,然后兩只都死了,這樣最后在第m天死光的概率就是f[m],但是這個只是一只麻球的,所有麻球都死光是f[m]^k。
#include<math.h>
#include<stdio.h>
#define N 1000 + 10
double P[N] ,F[N];
int main ()
{
? ?int t ,n ,m ,k ,i ,j ,cas = 1;
? ?scanf("%d" ,&t);
? ?while(t--)
? ?{
? ? ? scanf("%d %d %d" ,&n ,&k ,&m);
? ? ? for(i = 0 ;i < n ;i ++)
? ? ? scanf("%lf" ,&P[i]);
? ? ? F[0] = 0 ,F[1] = P[0];
? ? ? for(i = 2 ;i <= m ;i ++)
? ? ? {
? ? ? ? ?F[i] = 0;
? ? ? ? ?for(j = 0 ;j < n ;j ++)
? ? ? ? ?F[i] += P[j] * pow(F[i-1] ,j);
? ? ? }
? ? ? printf("Case #%d: %.7lf\n" ,cas ++ ,pow(F[m] ,k));
? ?}
? ?return 0;
}
? ?
總結
以上是生活随笔為你收集整理的UVA11021麻球繁衍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVA10870递推关系(矩阵乘法)
- 下一篇: UVA11078开放式学分制(前面-后面