zoj 3696 Alien's Organ(泊松分佈)

題目鏈接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3696

Alien's Organ

Time Limit: 2 Seconds      Memory Limit: 65536 KB

There's an alien whose name is Marjar. It is an universal solder came from planet Highrich a long time ago.

Marjar is a strange alien. It needs to generate new organs(body parts) to fight. The generated organs will provide power to Marjar and then it will disappear. To fight for problem of moral integrity decay on our earth, it will randomly generate new fighting organs all the time, no matter day or night, no matter rain or shine. Averagely, it will generate λ new fighting organs every day.

Marjar's fighting story is well known to people on earth. So can you help to calculate the possibility of that Marjar generates no more than N organs in one day?

Input

The first line contains a single integer T (0 ≤ T ≤ 10000), indicating there are T cases in total. Then the following T lines each contains one integer N (1 ≤ N ≤ 100) and one float numberλ (1 ≤ λ ≤ 100), which are described in problem statement.

Output

For each case, output the possibility described in problem statement, rounded to 3 decimal points.

Sample Input

3
5 8.000
8 5.000
2 4.910

Sample Output

0.191
0.932
0.132

題意:一個外星人隨機產生器官,一天產生的數量的期望是x,求一天內產生個數小於等於N的概率。
分析:泊松分佈的概率分佈函數爲: 泊松分佈的參數λ是單位時間(或單位面積)內隨機事件的平均發生率。 泊松分佈適合於描述單位時間內隨機事件發生的次數。  泊松分佈的期望和方差均爲λ。

#include <cstdio>
#include <cmath>

int main()
{
    double x;
    int T, n;
    scanf("%d", &T);
    while(T--) {
        scanf("%d%lf", &n, &x);
        double ans = 0;
        double fac = 1;
        for(int i = 1; i <= n; i++) {
            fac *= (double)i;
            ans += pow(x, (double)i) / fac * exp(-x);
        }
        ans += exp(-x); // P(x=0)的情況
        printf("%.3lf\n", ans);
    }
    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章