|
@@ -0,0 +1,117 @@
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.BigInteger;
|
|
|
+
|
|
|
+/*
|
|
|
+ * To change this template, choose Tools | Templates
|
|
|
+ * and open the template in the editor.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author LH
|
|
|
+ */
|
|
|
+public class Rational extends Number
|
|
|
+{
|
|
|
+ private BigInteger za,ne;
|
|
|
+
|
|
|
+ public Rational(int z,int n)
|
|
|
+ {
|
|
|
+ za=new BigInteger(z+"");
|
|
|
+ ne=new BigInteger(n+"");
|
|
|
+ }
|
|
|
+ public Rational(String z,String n)
|
|
|
+ {
|
|
|
+ za=new BigInteger(z);
|
|
|
+ ne=new BigInteger(n);
|
|
|
+ }
|
|
|
+ public Rational(BigInteger z, BigInteger n)
|
|
|
+ {
|
|
|
+ za=z;
|
|
|
+ ne=n;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Rational add(Rational r)
|
|
|
+ {
|
|
|
+ BigInteger ggt = ne.gcd(r.ne);
|
|
|
+ BigInteger gemNenner=ne.multiply(r.ne).divide(ggt);
|
|
|
+ BigInteger b1m = gemNenner.divide(ne);
|
|
|
+ BigInteger b2m = gemNenner.divide(r.ne);
|
|
|
+ BigInteger z = b1m.multiply(za).add(b2m.multiply(r.za));
|
|
|
+ BigInteger ktemp = z.gcd(gemNenner);
|
|
|
+ return new Rational(z.divide(ktemp),gemNenner.divide(ktemp));
|
|
|
+ }
|
|
|
+ public Rational subtract(Rational r)
|
|
|
+ {
|
|
|
+ BigInteger ggt = ne.gcd(r.ne);
|
|
|
+ BigInteger gemNenner=ne.multiply(r.ne).divide(ggt);
|
|
|
+ BigInteger b1m = gemNenner.divide(ne);
|
|
|
+ BigInteger b2m = gemNenner.divide(r.ne);
|
|
|
+ BigInteger z = b1m.multiply(za).subtract(b2m.multiply(r.za));
|
|
|
+ BigInteger ktemp = z.gcd(gemNenner);
|
|
|
+ return new Rational(z.divide(ktemp),gemNenner.divide(ktemp));
|
|
|
+ }
|
|
|
+
|
|
|
+ public Rational multiply(Rational r)
|
|
|
+ {
|
|
|
+ BigInteger mz = za.multiply(r.za);
|
|
|
+ BigInteger mn = ne.multiply(r.ne);
|
|
|
+ BigInteger ktemp = mz.gcd(mn);
|
|
|
+ //System.out.println(">>>"+ktemp+"|"+mz.divide(ktemp)+"|"+mn.divide(ktemp));
|
|
|
+ return new Rational(mz.divide(ktemp),mn.divide(ktemp));
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public String toString()
|
|
|
+ {
|
|
|
+ return za+(isInteger()?"/"+ne:"")+"";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isInteger()
|
|
|
+ {
|
|
|
+ return ne.intValue()==1;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //räzel für sie :P
|
|
|
+ // import static java.lang.Integer.*;class A{public static void main(String[] args){Integer a=0,b=a++,e=a++;String c=e.toString(),d=b.toString(),l=((char)parseInt(d+c+c+d+c+c+d+d,a)+c).substring(0, e);String H = l+((char)parseInt(d+c+d+d+c+d+d+d,a))+((char)parseInt(d+c+c+d+d+c+d+c,a))+l+l+(char)parseInt(d+c+c+d+c+c+c+c,a)+(char)parseInt(d+d+c+d+d+d+d+d,a)+(char)parseInt(d+c+d+c+d+c+c+c,a)+(char)parseInt(d+c+c+d+c+c+c+c,a)+(char)parseInt(d+c+c+c+d+d+c+d,a)+l+(char)parseInt(d+c+c+d+d+c+d+d,a)+(char)parseInt(d+d+c+d+d+d+d+c,a);System.out.println(H.substring(e));}}
|
|
|
+ // //was würde dieser codeschnipsel machen?
|
|
|
+ // //und welche tricks benutz ich da (ps: das war im kurs schon dran :P)
|
|
|
+ //ende räzel
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //implementskram
|
|
|
+ @Override
|
|
|
+ public int intValue()
|
|
|
+ {
|
|
|
+ return za.divide(ne).intValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public long longValue()
|
|
|
+ {
|
|
|
+ return za.divide(ne).longValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public float floatValue()
|
|
|
+ {
|
|
|
+ BigDecimal za2=new BigDecimal(za);
|
|
|
+ BigDecimal ne2=new BigDecimal(ne);
|
|
|
+ return za2.divide(ne2).floatValue();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public double doubleValue()
|
|
|
+ {
|
|
|
+ BigDecimal za2=new BigDecimal(za);
|
|
|
+ BigDecimal ne2=new BigDecimal(ne);
|
|
|
+ return za2.divide(ne2).doubleValue();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|