1. 程式人生 > >[JAVA][2013藍橋杯預賽 JAVA本科B組][有理數類]

[JAVA][2013藍橋杯預賽 JAVA本科B組][有理數類]

標題:有理數類

    有理數就是可以表示為兩個整數的比值的數字。一般情況下,我們用近似的小數表示。但有些時候,不允許出現誤差,必須用兩個整數來表示一個有理數。

    這時,我們可以建立一個“有理數類”,下面的程式碼初步實現了這個目標。為了簡明,它只提供了加法和乘法運算。

class Rational
{
private long ra;
private long rb;

private long gcd(long a, long b){
if(b==0) return a;
return gcd(b,a%b);
}
public Rational(long a, long b){
ra = a;
rb = b;
long k = gcd(ra,rb);

if(k>1){ //需要約分
ra /= k;  
rb /= k;
}
}
// 加法
public Rational add(Rational x){
return new Rational(ra * x.rb + rb * x.ra, rb * x.rb);  //填空位置
}
// 乘法
public Rational mul(Rational x){
return new Rational(ra*x.ra, rb*x.rb);
}
public String toString(){
if(rb==1) return "" + ra;
return ra + "/" + rb;
}
}

使用該類的示例:
Rational a = new Rational(1,3);

Rational b = new Rational(1,6);
Rational c = a.add(b);
System.out.println(a + "+" + b + "=" + c);

請分析程式碼邏輯,並推測劃線處的程式碼,通過網頁提交

注意:僅把缺少的程式碼作為答案,千萬不要填寫多餘的程式碼、符號或說明文字!!

很簡單的題目,答案就直接寫上去了。。