2290 - 兼职任务
时间限制 : 1 秒
内存限制 : 128 MB
小东想去赚点外快,所以他报名参加了物流学院统计交通事故的兼职,每天据说有150RMB。好学的小东从交警那里得知,这个路口在他们观察的那一时段内汽车出现交通事故的概率为0.0001,小东又统计到了这一时段通过这一路口的车的总量为M,求出交通事故的次数不小于N的概率
e = 2.718282
题目输入
每行两个数字M和N(用空格分开),1000 ≤ m ≤ 100000, n ≤ m,当m和n同时为0时输入结束。
题目输出
题目要求的概率(保留小数点后四位)
输入/输出样例
输入格式
1000 2 0 0
输出格式
0.0047
C语言解答
#include <stdio.h> #include <math.h> #define e 2.718282 double boSong(int i,double x); int jiCheng(int i); int main() { int m,n,i; double result,x; while(scanf("%d %d",&m,&n)) { if(m==0&&n==0) break; x=m*0.0001; for(i=0,result=1;i<n;i++) result-=boSong(i,x); printf("%.4lf\n",result); /* printf("%lf\n %d", boSong(0,x),jiCheng(0));*/ } } double boSong(int i,double x) { return pow(x,i)*pow(e,-x); } int jiCheng(int i) { if(i==0) return 1; else return (i*jiCheng(i-1)); }
C++解答
#include<stdio.h> #include<math.h> int main(){ int m, n; while(scanf("%d%d", &m, &n) != EOF){ if(m == 0 && n == 0) return 0; double a, b; a = 1 / exp(0.0001 * m); b = a; for(int i = 1; i < n; i++){ a *= (0.0001 * m) / i; b += a; } printf("%.4lf\n", 1 - b); } return 0; }