Deskripsi Untuk Soal Nomor 31 dan 34
Perhatikan potongan program berikut:
for i := 0 to ((1 shl n) – 1 do
begin
for j := 0 to n - 1 do
begin
if((i and (1 shl j)) <> 0)then
write('1')
else
write('0');
end;
writeln;
end;Jika kode di atas dijalankan dengan n = 3, maka banyak angka 0 yang dihasilkan oleh instruksi pada baris ke-5 adalah:
A. 5
B. 4
C. 3
D. 2
E. 1
Agar keluaran kode di atas sama dengan 1100, maka nilai n yang harus diinput adalah:
A. 5
B. 4
C. 3
D. 2
E. 1
Untuk setiap baris hasil keluaran, selisih jumlah angka 1 paling banyak adalah:
A. n*n
B. n*(n-1)/2
C. n
D. log(n)
E. log(n)/2
Agar keluaran kode di atas menjadi angka 0 semua pada baris ganjil dan hanya sebuah angka 1 pada baris genap paling kiri, maka baris kelima harus diganti menjadi:
A. if ((i and (1 shl j)) = 1) then
B. if ((i or (1 shl j)) = 0) then
C. if ((j and (1 shl i)) = 1) then
D. if ((j or (1 shl i) = 0) then
E. if ((j xor (1 shl i) = 0) then
TOKI Pelatnas 2013
Nomer 31.
dicari baris ke 5 , artinya hanya pada saat i ke 5 saja ( i dimulai dari 0 "i = 4" ) , i yg lain ga perlu di coba.
kalau dilihat j dimulai dari angka 0 , diakhiri oleh n-1 menandakan iterasi loop berjumlah tepat N
lalu untuk mendalami kodenya
if ( ( i and (1 shl j ) ) <> 0 ) then
" <> 0 " artinya jika hasil dari binary operator " (i and (1 shl j)) " Tidak sama dengan 0 maka write("1")
sebaliknya jika sama dengan 0 maka write("0");
untuk j pertama yaitu j = 0
kita masukkan ke dalam persamaan
(i and (1 shl j)) <> 0
(4 and (1 shl 0)) <> 0
(4 and 1 ) <> 0
binary nya (4 and 1)
4 = 100
1 = 001
=====
000 = 0
karena sama dengan 0
maka write("0")
untuk j yg kedua j = 1
(i and (1 shl j)) <> 0
(4 and (1 shl 1)) <> 0
(4 and 2) <> 0
binary nya (4 and 2)
4 = 100
2 = 010
=====
000 = 0
karena sama dengan 0 make write("0")
untuk terakhir j = 2
(5 and (1 shl 2)) <> 0
(5 and 4) <> 0
binary nya (5 and 4)
5 = 101
4 = 100
=====
100 = 4
tidak sama dgn 0 maka write("1")
setelah didapat stringnya "001"
banyak 0 adalah 2
Jawaban = D . 2
===================================================================
Nomer 32
ditanya berapakah N supaya outputnya "1100"
ga usah mikir pusing berapa N nya.
kita lihat saja J := 0 to n-1 , kompleksit J = O(N)
iterasinya unik , "1100" mempunyai tepat 4 digit . artinya N = 4
Jawaban = B . 4
===================================================================
Nomer 33
Pada setiap baris , selisih Jumlah angka 1 dengan 0 paling banyak adalah.
misalkan n = 3
for i := 0 to ( 1 shl n ) - 1 do
for j := 0 to n-1 do
dari iterasi di atas dapat kita ketahui
Binary paling tinggi = "111" = 7
Binary paling rendah = "000" = 0
maka selisih angka 1 dan 0 = N
Jawaban C . n
===================================================================
Nomer 34
Jawaban A. if ((i and (1 shl j)) = 1) then
Masuk untuk menulis jawaban
ISEKAI
A. if ((i and (1 shl j)) = 1) then