public class BilletesMonedas {



   // calcula
   public void calcula(int []den, int []res, int c) {
      if (den.length != res.length)  {
         System.out.println("Error los arreglos no son del mismo tamano");
         System.exit(1);
      }
      // Inicializacion
      int i, xc = c;
      int []u = new int[res.length];

      // Ciclo sobre cada una de las denominaciones
      for (i = 0; i < den.length; i++) {
         // ciclo sobre cada una de las cantidades que satisfacen la denominacion y la restriccion
         while (xc >= den[i] && u[i] < res[i]) {
            xc -= den[i];
            u[i]++;
         }
      }

      // visualizacion
      System.out.println("cantidad:" + c);
      for (i = 0; i < den.length; i++) {
         System.out.println("en: " + den[i]  + " con la restriccion de: " + res[i] + " se usaron: " + u[i]);
      }
      System.out.println("sobra: " + xc);
      // prueba
      int r = 0;
      for (i = 0; i < den.length; i++) r += den[i] * u[i];
      r += xc;
      System.out.println("Prueba: " + r);

   }

   // Ejemplito de uso ...
   public static void main(String[] args) {
      int []d = {1000, 500, 100};
      int []r = {6, 4, 100};

      BilletesMonedas c = new BilletesMonedas();
      c.calcula(d, r, 7401);

   }
};