public static void main(String[] args) {
try{
System.out.println("scaling 4 : " + unitScalingCalculator(4));
System.out.println("scaling 5 : " + unitScalingCalculator(5));
System.out.println("scaling 6 : " + unitScalingCalculator(6));
System.out.println("scaling 7 : " + unitScalingCalculator(7));
System.out.println("scaling 10 : " + unitScalingCalculator(10));
System.out.println("scaling 11 : " + unitScalingCalculator(11));
System.out.println("scaling 15 : " + unitScalingCalculator(15));
System.out.println("scaling 16 : " + unitScalingCalculator(16));
System.out.println("scaling 20 : " + unitScalingCalculator(20));
System.out.println("scaling 24 : " + unitScalingCalculator(24));
System.out.println("scaling 25 : " + unitScalingCalculator(25));
System.out.println("scaling 26 : " + unitScalingCalculator(26));
System.out.println("scaling 49 : " + unitScalingCalculator(49));
System.out.println("scaling 50 : " + unitScalingCalculator(50));
System.out.println("scaling 51 : " + unitScalingCalculator(51));
System.out.println("scaling 99 : " + unitScalingCalculator(99));
System.out.println("scaling 100 : " + unitScalingCalculator(100));
System.out.println("scaling 101 : " + unitScalingCalculator(101));
}catch(Throwable e){
e.printStackTrace();
}
}
public static int scale(int n, int unit) {
return (n - (n % unit)) / unit;
}
public static int unitScalingCalculator(int n) {
final int[] units = new int[] {25, 10, 5, 1};
int total = 0;
for (int i=0; i<units.length; i++)="" {="">
total += unitscales(n, units, i);
}
return total;
}
public static int unitscales(int n, int[] units, int index) {
int total = 0;
if (n <= 0 || index >= units.length) {
return 0;
}
int scale = scale(n, units[index]);
if (scale >= 1) {
total++;
int temp = index + 1;
for (int i=temp; index < units.length && i++){<units.length; i++)="" {="">
if (scale > 1) {
total += unitscales(n - units[index], units, temp);
}
}
}
return total;
}