Chaekyunx’s Weblog “simple informatics cabin”

Archive for the ‘pemrograman terstruktur’ Category

Apa tuh parade lampu?????? penasaran ya???

nie soal lengkapnya,….

Ehya, soal nie pernah keluar di OSN, sebelum itu pernah dibuat juga di lomba IOI’98

Nama Soal : Parade Lampu
Kategori : Sedang
Problem Setter : Rully

Deretan lampu warna-warni dipasang untuk memeriahkan acara pesta.
Jumlah lampu yang dipasang sebanyak N yang diberi nomor 1 sampai
dengan N. Lampu-lampu tersebut terhubung pada rangkaian pengendali yang
mempunyai 4 buah tombol. Masing-masing tombol tersebut berfung-si
sebagai berikut :
Tombol 1 : Jika tombol ini ditekan, maka semua lampu yang terhubung
akan berubah statusnya. Artinya, lampu yang semula
MENYALA akan PADAM, sedang lampu yang semula
PADAM akan MENYALA.
Tombol 2 : Jika tombol ini ditekan, maka semua lampu yang bernomor
ganjil akan berubah statusnya.
Tombol 3 : Jika tombol ini ditekan, maka semua lampu yang bernomor
genap akan berubah statusnya.
Tombol 4 : Jika tombol ini ditekan, maka semua lampu yang bernomor
3K+1 akan berubah statusnya. K adalah bilangan bulat ≥ 0.
Pada rangkaian pengendali, terdapat counter C yang mencatat banyaknya
penekanan tombol yang telah dilakukan. Ketika acara dimulai, kondisi semua
lampu MENYALA dan counter C diset 0 (nol). Untuk menyatakan status
lampu yang MENYALA, digunakan nilai 1 (satu). Sedangkan untuk lampu
yang PADAM, digunakan nilai 0 (nol).
Buatlah program untuk menentukan semua konfigurasi akhir yang
mungkin dari status semua lampu sebanyak N tersebut berdasarkan
informasi yang diberikan. Informasi yang diberikan meliputi nilai akhir counter
C serta status akhir dari sebagian lampu. Semua konfigurasi akhir yang
mungkin tersebut tidak diperbolehkan berulang.
INPUT
Input terdiri atas 4 baris. Baris pertama menyatakan banyaknya N buah lampu.
Baris kedua menyatakan nilai akhir counter C. Batasan nilai N dan C adalah
sebagai berikut : 10 ≤ N ≤ 100, 1 ≤ C ≤ 10000. Baris ketiga, berisi daftar
nomor lampu yang MENYALA pada akhir acara. Setiap nomor dipisah-kan
oleh spasi dan diakhir baris diberikan nilai -1. Baris keempat, berisi daftar
nomor lampu yang PADAM pada akhir acara. Setiap nomor dipisahkan oleh
spasi dan diakhir baris diberikan nilai -1.
OUPUT
Output berisi semua konfigurasi akhir yang mungkin dari status semua lampu
sebanyak N tersebut berdasarkan informasi yang diberikan. Tidak
diperbolehkan adanya konfigurasi yang berulang. Tiap konfigurasi yang
mungkin harus dituliskan pada baris yang berbeda. Urutan konfigurasi boleh
sebarang.
CONTOH INPUT
10
1
-1
7 -1
Pada kasus diatas, terdapat 10 lampu dan hanya sekali terjadi penekanan
tombol. Hanya diketahui informasi bahwa, lampu nomor 7 statusnya PADAM
diakhir acara.
CONTOH OUTPUT
0000000000
0110110110
0101010101
Pada kasus diatas, ada 3 kemungkinan konfigurasi lampu diakhir acara,
yaitu :
• Semua lampu PADAM.
• Lampu nomor 1, 4, 7 dan 10 PADAM; sedangkan LAMPU 2, 3, 5, 6, 8
dan 9 MENYALA.
• Lampu nomor 1, 3, 5, 7 dan 9 PADAM, sedangkan LAMPU 2, 4, 6, 8
dan 10 MENYALA.

nah,….silahkan di bwt latihan dulu ya….

ayo temukan!!!!!!!!!!!!!!

Iklan

<!– /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:””; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:”Times New Roman”; mso-fareast-font-family:”Times New Roman”;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} –>


/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}

import javax.swing.*;

public class cobaprima

{

public static void main( String args[] ) {

int input1;

int input2;

int array [];

int isi=0;

array= new int [1000];

int i=0;

String input1String;

String input2String;

String keluaran=””;

JOptionPane.showMessageDialog

(null,”bilangan I < bilangan II”+”\n”+” 2 <= bilangan I <= bilangan II <= 10000″, “Aturan”,JOptionPane.INFORMATION_MESSAGE);

input1String = JOptionPane.showInputDialog

( “Masukkan bilangan bulat pertama : ” );

input1=Integer.parseInt( input1String );

input2String = JOptionPane.showInputDialog

( “Masukkan bilangan bulat kedua : ” );

input2=Integer.parseInt( input2String );

if (input2-input1<50&&2<=input1&&input1<=input2&&input2<=10000)

{

for ( int bil=input1;bil<=input2;bil++)

{

int prima=1;

if (bil==2)

{

prima=1;

}

for (int bagi=2;bagi<=bil/2;bagi++)

{

if( bil%bagi==0)

{

prima=0;

}

}

if (prima==1)

{

array[i]=bil;

i++;

}

}

for (int x=0;x<i;x++)

{

for (int y=0;y<i;y++)

{

String temp = Integer.toString(array[x])+Integer.toString(array[y]);

int angka = Integer.parseInt(temp);

int prima=1;

for (int bagi=2;bagi<=angka/2;bagi++)

{

if( angka%bagi==0)

{

prima=0;

}

}

if (prima==1)

{

// System.out.println(array[x]+” “+array[y]);

//isi=1;

keluaran += array[x]+” “+array[y]+”\n”;

isi=1;

}

}

}

if (isi!=1)

{

//System.out.println(“TIDAK ADA”);

JOptionPane.showMessageDialog

(null,”TIDAK ADA”, “Results”,JOptionPane.INFORMATION_MESSAGE);

}

else

{

keluaran = keluaran + “\n”;

JTextArea outputArea = new JTextArea ();

outputArea.setText(keluaran);

JOptionPane.showMessageDialog(null, outputArea, “results”,JOptionPane.INFORMATION_MESSAGE);

}

}

else

{

JOptionPane.showMessageDialog

(null,”MASUKKAN ANGKA YANG BENAR”, “Peringatan”,JOptionPane.INFORMATION_MESSAGE);

}

System.exit (0);

}

}

di coba ndiri yach,…

nie ngerjainnya ampe malem bgt, pulang dari kampus udah sepiiiiiiiiiii bnaget jalannya,.udah berkabut pula,…

hiii ngeri!!!!


v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
<!– /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:””; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:”Times New Roman”; mso-fareast-font-family:”Times New Roman”;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} –>


/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}

ni soal bwt UTS yg take home, ada 2 sih sebenernya,…tapi yang ini dulu deh,..lebih gampang,..

hehehe……

Kalo misalkan ada 2 bilangan prima A=2 dan B=3, naka Aditempelkan pada B =AB=23 juga prima,.

tapi misalkan A=2 dan B=5, AB=25 bukan bilangan prima,…

nah, tugasnya adalah menampilkan bilangan prima setelah ditempelkan itu,.Inputan 2 bilangan bulat M dan N, M < N. 2<= M <= A <= B <= N <= 10.000, untuk menguragi running time program, dibatasi N-M <=50.

Outputnya nanti dua bilangan prima dipisahkan spasi yang klo digabung juga prima,.

daripada bingung, gini contohnya :

Input = 2 10

Output = 2 3; 3 7; 4 3; 4 7; 7 3;

ehya,.ternyata kmaren program penampil bulangan pascal pake array masih ada yang salah,..kan masih muncul 000000,..

nah,.ini baru sempet nyari gmana yg bener,…

source code bilangan pascal di java,..

import javax.swing.*;

public class PASCALARRAY {

public static void main(String args[])

{

int i;

int j;

int n;

int pascal[][];

pascal = new int [100][100];

String masukkan;

String keluaran=”Segitiga Pascal Array\n\n”;

masukkan = JOptionPane.showInputDialog(”Inputkan bilangan asli : “);

n=Integer.parseInt(masukkan);

for (i=0;i<n;i++)

{

for (j=0;j<n;j++)

{

if (j==0||i==j)

{

pascal[i][j]=1;

}

else if (i>j)

{

pascal [i][j]=pascal[i-1][j-1]+pascal[i-1][j];

}

else

{

pascal[i][j]=\n;

}

}

}

for (int baris=0;baris<n;baris++)

{

for(int kolom=0;kolom<=baris;kolom++)

keluaran += pascal [baris][kolom]+”\t”;

keluaran = keluaran + “\n\n”;

}

JTextArea outputArea = new JTextArea ();

outputArea.setText(keluaran);

JOptionPane.showMessageDialog(null, outputArea, “Segitiga Pascal Array”,JOptionPane.DEFAULT_OPTION);

System.exit(0);

}

}

nah,.ini inyaAllah bener,…

import javax.swing.*;

public class magicboxdyah

{

    public static void main (String args[])

    {

    int array [][];

    int i, j, n;

    int bilangan;

    String Input;

    String Output = “”;

   

    array = new int [100][100];

   

    Input = JOptionPane.showInputDialog(“Inputkan sebuah bilangan asli: “);

    n = Integer.parseInt(Input);

     

    i = 0;          //indeks baris

    j = n/2;        //indeks kolom

   

    for ( bilangan = 1; bilangan <= n*n; bilangan ++)

    {

             array [i][j] = bilangan;

            

             if (bilangan%n == 0)

             i ++;

            

             else

             {

                 i –;

                 j ++;

             }      

                 

             if (i == -1)

             i = n-1;

   

             if(j >= n)

             j = 0;

    }

   

    for (int baris = 0; baris < n; baris ++)

    {

        for(int kolom = 0; kolom < n; kolom ++)

        {

            Output += array [baris][kolom] + “\t”;

        }

        Output = Output + “\n”;

     }   

      

     JTextArea outputArea = new JTextArea ();

     outputArea.setText(Output);

       

     JOptionPane.showMessageDialog(null, outputArea, “output:”,JOptionPane.INFORMATION_MESSAGE);

          

     System.exit(0);

    }

import javax.swing.JOptionPane;

import javax.swing.JTextArea;

 

public class pascalcombination {

    public static void main(String[]args){

      

    int n,r,input,counter,comb,faktorial,faktorialnr,faktorialr;

   

    String masukkan;

    String output=””;

   

    masukkan=JOptionPane.showInputDialog(“inputkan bilangan asli: “);

    input=Integer.parseInt(masukkan);

 

    for(counter=0;counter<input;counter++)

    {

       n=counter;

      

       for(int i=0;i<=counter;i++)

       {        

            r=i;

            faktorial=1;

            for(int x=n;x>=1;x–)

            {

                faktorial=faktorial*x;

            }

            faktorialnr=1;

           

            for(int y=n-r;y>=1;y–)

            {

                faktorialnr=faktorialnr*y;

            }

            faktorialr=1;

           

            for(int z=r;z>=1;z–)

            {

                faktorialr=faktorialr*z;

            }

    

            comb=faktorial/(faktorialnr*faktorialr);

            output += comb + “\t”;

     

       }

       output +=”\n”;

      

      

      }

    JTextArea outputArea= new JTextArea();

       outputArea.setText(output);

      

       JOptionPane.showMessageDialog(null,outputArea,”Pascal dengan Combination”,JOptionPane.PLAIN_MESSAGE);

    System.exit(0);      

    }

}

 

 

 

import javax.swing.*;

public class PASCALARRAY {

    public static void main(String args[])

    {

        int i;

        int j;

        int n;

        int pascal[][];

       

        pascal = new int [100][100];

       

        String masukkan;

        String keluaran=”Segitiga Pascal Array\n\n”;

       

        masukkan = JOptionPane.showInputDialog(“Inputkan bilangan asli : “);

        n=Integer.parseInt(masukkan);

       

        for (i=0;i<n;i++)

        {

            for (j=0;j<n;j++)

            {

                if (j==0||i==j)

                {

                    pascal[i][j]=1;

                }

                else if (i>j)

                {

                    pascal [i][j]=pascal[i-1][j-1]+pascal[i-1][j];

                }

                else

                {

                    pascal[i][j]=\n;

                  }

            }  

           

        }

       

        for (int baris=0;baris<n;baris++)

        {

            for(int kolom=0;kolom<n;kolom++)

            keluaran += pascal [baris][kolom]+”\t”;

            keluaran = keluaran + “\n\n”;

        }

       

        JTextArea outputArea = new JTextArea ();

        outputArea.setText(keluaran);

       

        JOptionPane.showMessageDialog(null, outputArea, “Segitiga Pascal Array”,JOptionPane.DEFAULT_OPTION);

       

       

        System.exit(0);

    }

}

maaf ya, ni ada yang kurang sempurna…yg q tebelin ni q ga yakin bener ato ga, belum q coba soalnya,…

awalnya punyaq cetak angka “0”,.