您的位置:首页 > 其它

【ACM刷题录】UVa10288 Coupons

2017-06-01 18:58 351 查看
题目与出处
题目:Coupons
出处:UVa 10288
题意概述
描述:一共有n种不同的Coupons,每次得到每种Coupons的概率相同。问期望多少次可以得到所有的n种Coupons,以带分数形式输出。
数据范围:1<=n<=33
算法分析
该题目涉及到求数学期望,可以采用分治法的思想,每一次在上一次的期望下得到最新的期望。当已经有k种Coupons得到时,得到新的Coupons的概率为(n-k)/n,期望值为n/(n-k),所以可以得出总步数的期望值为:。
代码实现
代码实现为java实现
package
main;
 
public
class Coupons {
   

   
public
static
class Fraction{
      
//分子
      
public
long
numerator;
      
//分母
      
public
long
denominator;
      

      
public Fraction(long
numerator,
long
denominator){
          
this.numerator
= numerator;
          
this.denominator
= denominator;
      
}
      

      
public
void add(Fraction
frac){
          
long
num1 =
this.numerator
* frac.denominator;
          
long
num2 =
this.denominator
* frac.numerator;
          
long
theNumerator =
num1+num2;
          
long
theDenominator =
this.denominator
* frac.denominator;
          
this.numerator
= theNumerator;
          
this.denominator
= theDenominator;
          
release();
      
}
      

      
public
void show(){
          
System.out.println(this.numerator
+ "/" +
this.denominator);
      
}
      

      
//辗转相除法求进行约分
      
private
void release(){
          
long
tempBig =
this.numerator
> this.denominator
? this.numerator:this.denominator;
          
long
tempSmall =
this.numerator
< this.denominator
? this.numerator:this.denominator;
          
long
temp;
          
while(tempBig
% tempSmall != 0){
             
temp =
tempBig %
tempSmall;
             
tempBig =
tempSmall;
             
tempSmall =
temp;
          
}
          
temp =
tempSmall;
          
this.numerator
= this.numerator
/ temp;
          
this.denominator
= this.denominator
/ temp;
      
}
   
}
   

   
public
static Fraction coupons(long
n){
      
Fraction answer =
new Fraction(0,1);
      
for(long
i=0;
i<n;
i++){
          
answer.add(new
Fraction(n,
n-i));
      
}
      
answer.show();
      
return
answer;
   
}
   

   
public
static
void main(String
args[]){
      
coupons(33);
   
}
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: