OSP 2012

Potongan program berikut ini merupakan pseudocode untuk soal nomor 35-36
function campur(n : integer) : integer;
begin
    campur := n * n;
end;

function aduk(x,y,z : integer) : integer;
begin
    if (y = 0) then
        aduk := 1
    else if (y mod 2 = 0) then
        aduk := campur(aduk(x,y div 2,z)) mod z
    else
        aduk := ( (x mod z) * aduk(x,y-1,z) ) mod z;
end;

var
    a,b,c : integer;

begin
    readln(a,b,c);
    writeln(aduk(a,b,c));
end.
  1. Jika program dijalankan dan pengguna memasukkan angka 2, 10, dan 10, berapakah angka yang dikeluarkan program?

  2. Jika program dijalankan dan pengguna memasukkan angka 4, 40, dan 5, berapakah angka yang dikeluarkan program?


    Pertama, analisis setiap fungsi dan langkah.
    Fungsi campur adalah fungsi yang akan menghasilkan bilangan kuadrat dari parameternya. Sedangkan fungsi aduk akan memeriksa nilai y. Jika y bernilai 0, maka fungsi bernilai 1. Jika y merupakan bilangan genap, maka nilai y akan dibagi dua namun dengan hasil yang dikuadratkan dan mod z. Jika y merupakan bilangan ganjil, maka fungsi bernilai (x mod z) dikali fungsi aduk dengan y-1.

    Dengan mengabaikan mod, maka terlihat bahwa f(x,y=0) = 1.
    f(x,1) = x
    f(x,2) = x2
    f(x,3) = x*f(x,2) = x3
    f(x,4) = x2 * x2 = x4.

    Dengan demikian f(x,y) = xy. Dengan menambahkan z, maka:
    aduk(x,y,z) = xy mod z.

  1. aduk(2,10,10) = 210 mod 10 = 1024 mod 10 = 4.

  2. aduk(4,40,5) = 440 mod 5, karena terlalu besar, bagi hasilnya seperti algoritma program.
    440 mod 5 = (420 mod 5)2 mod 5
    420 mod 5 = (410 mod 5)2 mod 5
    410 mod 5 = (45 mod 5)2 mod 5
    45 mod 5 = (4*44 mod 5)2 mod 5
    44 mod 5 = 256 mod 5 = 1.

    45 mod 5 = (4*1)2 mod 5 = 16 mod 5 = 1
    410 mod 5 = 12 mod 5 = 1
    420 mod 5 = 12 mod 5 = 1
    440 mod 5 = 12 mod 5 = 1
    Dengan demikian, angka yang dicetak oleh program adalah 1.

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Langganan

Subscribe To Our Newsletter

0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!