概率 lightoj 1027
题意 : 在n个门前选择一扇门出去, 然后如果第i扇门的 Xi值是正的话,你会花费Xi时间后出去 , 如果Xi是负数的话你会花费-Xi时间后回到老地方,并且忘记了刚才的选择, 选择一扇门的概率是等概的。求出去的期望。
思路 :定义一次选择选择到Xi是整数的概率为P1,选择到负数的概率是P2,然后选择了正数后平均在T1时间后出去, 选择了负数后平均在T2时间后回到原地。接着设出去的期望是Y,那么可以写出一个式子 :Y = P1 * T1 + P2 * (T2 + Y), 这样的话问题就得到了解决, 最后整理下式子就是 : Y = 正数个数的倒数 * ∑abs(Xi) ;
————————————————
版权声明:本文为CSDN博主「cnwsycf」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/danceonly/article/details/16824745
1 #include<cstdio> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 using namespace std; 6 int gcd(int a,int b) 7 { 8 return b ? gcd(b,a%b) : a; 9 } 10 int main() 11 { 12 int T; 13 scanf("%d",&T); 14 int cnt=0; 15 while(T--){ 16 int n,a; 17 scanf("%d",&n); 18 int base=0; 19 int sum=0; 20 for(int i=1;i<=n;i++){ 21 scanf("%d",&a); 22 if(a<=0) sum+=-a; 23 else sum+=a,base++; 24 } 25 printf("Case %d: ",++cnt); 26 if(!base) printf("inf\n"); 27 else{ 28 int temp=gcd(sum,base); 29 sum=sum/temp,base=base/temp; 30 printf("%d/%d\n",sum,base); 31 } 32 } 33 return 0; 34 }