/**
*
* @param repeating
* @param separate
* @return
*/
public static String Repeating2Smallest(String repeating, String separate){
String separate_l = separate.substring(0,1);
String separate_r = separate.substring(1,2);
String separate_p = ".";
int index_p = repeating.indexOf(separate_p);
int index_l = repeating.indexOf(separate_l);
int index_r = repeating.indexOf(separate_r);
BigInteger number = new BigInteger(repeating.substring(0,index_p));
int n = index_l-index_p-1;
BigInteger a = BigInteger.ZERO;
if(n>0)a = new BigInteger(repeating.substring(index_p+1,index_l));
int m = index_r-index_l-1;
BigInteger b = BigInteger.ZERO;
if(m<=0) return "请输入正确的循环体";
if(m>0)b= new BigInteger(repeating.substring(index_l+1,index_r));
BigInteger numerator = NumeratorFormula(m, a, b);
BigInteger denominator = DenominatorFormula(n , m);
BigInteger gcd = BigInteger.ZERO;
while(!gcd.equals(BigInteger.ONE)){
gcd = numerator.gcd(denominator);
numerator = numerator.divide(gcd);
denominator = denominator.divide(gcd);
}
return number+" "+numerator+"/"+denominator;
}
/**
*
* @param m
* @param a
* @param b
* @return
*/
private static BigInteger NumeratorFormula(int m,BigInteger a,BigInteger b){
return BigInteger.TEN.pow(m).subtract(BigInteger.ONE).multiply(a).add(b);
}
/**
*
* @param n
* @param m
* @return
*/
private static BigInteger DenominatorFormula(int n,int m){
return BigInteger.TEN.pow(m).subtract(BigInteger.ONE).multiply(BigInteger.TEN.pow(n));
}
public static void main(String[] args) {
String s = "0.19[1919]";
System.out.println(Repeating2Smallest(s,"[]"));
}