题目链接:https://vjudge.net/problem/LightOJ-1027
知识点: 概率与期望
解题思路:
由输入可算出直接出去的概率 (p) 和回到原地的概率 (q),以及直接出去的用时的平均值 (t_1) 和回到原地的平均用时 (t_2) .设答案为 (T),则
(T = p cdot t_1 + q cdot (t_2 + T)).
AC代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int x[110]; 4 int gcd(int a,int b){ 5 if(b==0) return a; 6 return gcd(b,a%b); 7 } 8 int main(){ 9 int T,n; 10 scanf("%d",&T); 11 for(int t=1;t<=T;t++){ 12 printf("Case %d: ",t); 13 scanf("%d",&n); 14 int flag=0; 15 int t1=0,t2=0; 16 for(int i=1;i<=n;i++){ 17 scanf("%d",&x[i]); 18 if(x[i]>0){ 19 flag++; 20 t1+=x[i]; 21 } 22 else 23 t2-=x[i]; 24 } 25 if(!flag) printf("inf "); 26 else{ 27 int p1=flag,q1=n-flag; 28 int a1=t1+t2,a2=n-q1; 29 int tmp=gcd(a1,a2); 30 printf("%d/%d ",a1/tmp,a2/tmp); 31 } 32 } 33 return 0; 34 }