/*
Online Java - IDE, Code Editor, Compiler
Online Java is a quick and easy tool that helps you to build, compile, test your programs
online.
*/

public class Main
{
    static int posAfterDecimal=1;
    
    public static void main(String[] args)
    {
        System.out.println("Welcome to Online IDE!! Happy Coding :)");
        System.out.println("\n" + expandedForm(81.6123456789765432));
    }
    
    public static String expandedForm(Double number)
    {
        String createString=null;
        String convertedNumber = Double.toString(number);
        int positionDecimalPoint= convertedNumber.indexOf('.');
        int remainingChars;
        int roundedNearestUnit;
        int count=1;
        Double remainingPart=0.0;
        String charsBeforeDecimal = convertedNumber.substring(0,positionDecimalPoint);
        String charsAfterDecimal =
convertedNumber.substring(positionDecimalPoint+1,convertedNumber.length());
        int lengthCharsBeforeDecimal = charsBeforeDecimal.length();
        int lengthCharsAfterDecimal = charsAfterDecimal.length();
        int prefix;
        String format=null;
        int denominator;
        char numerator;
        String finalNumber;
        String temp;
        
        do
        {
            remainingChars = convertedNumber.length();
            temp=convertedNumber;
            prefix = Character.getNumericValue(temp.charAt(0));
            convertedNumber=convertedNumber.substring(1,remainingChars);
            remainingPart = Double.parseDouble(convertedNumber);
            
            if (prefix==-1)
            {
                if (lengthCharsAfterDecimal==1)
                {
                    denominator = (int)Math.pow(10,posAfterDecimal);
                    finalNumber = temp.charAt(1) + "/" + denominator;
                    createString="";
                    return finalNumber;
                }
                
                denominator = (int) Math.pow(10,posAfterDecimal);
                numerator = temp.charAt(1);
                format = numerator + "/" + denominator;
                convertedNumber="." + temp.substring(2,temp.length());
                remainingPart = Double.parseDouble(convertedNumber);
                posAfterDecimal++;
                
                return format + " + " + expandedForm(remainingPart);
            }
            if (lengthCharsBeforeDecimal>=1 && temp.charAt(0)!='0')
            {
                System.out.println("IN HERE*************");
                roundedNearestUnit = (int) (Math.pow(10,lengthCharsBeforeDecimal-count) * prefix);
                createString = Integer.toString(roundedNearestUnit);
                String remainder = remainingPart.toString();

                return createString + " + " + expandedForm(remainingPart);
            }
        }while(convertedNumber.length()>1);
                
        return " ";
    }
}