import java.util.Arrays;
public class Main{
    public static void main(String[] args){

            double[][] probabilities;
            int numMines = 4;  //The number of mines you have
            double firstProbability = .5;  //The probability that a mine has gold at first.  50% in example problem.  Express as a number between 0 and 1
            double probabilityAfterFound = .9;  //The probability that a mine has gold once one gold has been found.  90% in example problem.  
            
            probabilities = new double[numMines + 1][numMines+1];
            probabilities[0][0]=1;
            for(int mine = 1; mine <= numMines; mine++){
                probabilities[mine][0] = probabilities[mine-1][0]*(1-firstProbability);
                probabilities[mine][1] = probabilities[mine-1][0]*(firstProbability) + probabilities[mine-1][1]*(1-probabilityAfterFound);
                for(int numGolds = 2; numGolds <= numMines; numGolds++){
                    probabilities[mine][numGolds] = probabilities[mine-1][numGolds-1]*probabilityAfterFound + probabilities[mine-1][numGolds]*(1-probabilityAfterFound);
                }
            }
        
            for(int mine = 0; mine <= numMines; mine++){
                System.out.println(Arrays.toString(probabilities[mine]));
            }
            
            double expectedGolds = 0;
            for(int numGolds = 0; numGolds<=numMines; numGolds++){
                expectedGolds+=numGolds*probabilities[numMines][numGolds];
            }
            System.out.println("You expect to find gold " + expectedGolds + " times.");
            System.out.println("You expect to find gold at least once " + ((1-probabilities[numMines][0])*100) + "% of the time");
    }
}