Skip to content

Instantly share code, notes, and snippets.

@dwiash
Created January 21, 2010 10:19
Show Gist options
  • Save dwiash/282710 to your computer and use it in GitHub Desktop.
Save dwiash/282710 to your computer and use it in GitHub Desktop.
jawaban dari salah satu soal pada CSPC
/*
[jawaban dari salah satu soal pada CSPC]
program ini menghitung setiap kemungkinan ketika sejumlah uang ditukarkan dengan pecahan 50ribu, 20ribu, 10ribu atau seribu.
Misalnya untuk nilai 15000, akan menghasilkan kemungkinan:
1 10ribuan, 5 seribuan
15 seribuan
cara menjalankan program ini:
java Main [nilai uang yang akan ditukar]
misal:
java Main 15000
*/
public class Main {
public static void main(String[] args) {
int jumlahAsal = Integer.parseInt(args[0]);
int per50, per20, per10, per1, i, j, k, l, u50, u20, u10, u1, jmlTambah, sisaTambah, sisa50, sisa20, sisa10, sisa1;
per50 = bagi(jumlahAsal, 50000);
per20 = bagi(jumlahAsal, 20000);
per10 = bagi(jumlahAsal, 10000);
per1 = bagi(jumlahAsal, 1000);
for(i=0; i<=per50; i++){
for(j=0; j<=per20; j++){
for(k=0; k<=per10; k++){
for(l=0; l<=per1; l++){
u50 = 50000 * i;
u20 = 20000 * j;
u10 = 10000 * k;
u1 = 1000 * l;
jmlTambah = u50+u20+u10+u1;
sisaTambah = jumlahAsal-jmlTambah;
sisa50 = bagi(sisaTambah, 50000);
sisa20 = bagi(sisaTambah, 20000);
sisa10 = bagi(sisaTambah, 10000);
sisa1 = bagi(sisaTambah, 1000);
if(jmlTambah<=jumlahAsal && sisa50==0 && sisa20==0 && sisa10==0 && sisa1==0){
if(i!=0){
System.out.print(i+" 50ribuan, ");
}
if(j!=0){
System.out.print(j+" 20ribuan, ");
}
if(k!=0){
System.out.print(k+" 10ribuan, ");
}
if(l!=0){
System.out.print(l+" seribuan \n");
}
}
}
}
}
}
}
public static int bagi(int nilai, int pembagi){
int hasil, sisa;
sisa = nilai % pembagi;
hasil = (nilai-sisa)/pembagi;
return hasil;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment