2013 Multi-University Training Contest 5 k-th point

刚开始我也不知道怎么做,后来慢慢就推出来了……

对于样例

2 1 0,结果是2/3

2 2 0,结果是4/5

3 2 0,结果是6/7

3 2 1,结果是9/14=6/7*3/4

……

之后就会发现每一项都是d/(d+1);而d又是怎样来的呢?

上面的d分别是2*1;2*2;3*2,3*1……

所以规律就出来,哈哈……

看代码:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 #include<iomanip>
 5 #include<cmath>
 6 using namespace std;
 7 int main()
 8 {
 9     int t,n,p,k,i;
10     double ans;
11     cin>>t;
12     while(t--)
13     {
14         cin>>p>>n>>k;
15         ans=1.0;
16         for(i=n;i>=n-k;i--){
17             double an=1.0*p*i;
18             ans*=(an/(an+1));
19         }
20         printf("%.9lf
",ans);
21     }
22     return 0;
23 }
View Code
原文地址:https://www.cnblogs.com/xin-hua/p/3241837.html