Deskripsi Untuk Soal Nomor 48 dan 49
Perhatikan potongan program berikut:
function yolo(x,y:integer):integer;
begin
if (y = 0) then yolo:=x
else yolo:= yolo(y,x mod y)*yolo(y mod x, x mod y)*y;
end;
begin
writeln(yolo(19,5));
end.Berapakah keluaran program di atas?
A. 80
B. 0
C. 125
D. 720
E. 19
Bila fungsi yolo(9,y) dipanggil dan fungsi tersebut mengembalikan nilai 4, maka berapakah nilai y?
A. 1
B. 2
C. 3
D. 4
E. 5
Toolkit SMA N 1 Surakarta
Nomor 48:
yolo(19,5) = yolo(5,4) * yolo(5,4) * 5
= (yolo(4,1) * yolo(4,1) * 4) * (yolo(4,1) * yolo(4,1) * 4) * 5
= ((yolo(1,0) * yolo(1,0) * 1) * (yolo(1,0) * yolo(1,0) * 1) * 4) * ((yolo(1,0) * yolo(1,0) * 1) * (yolo(1,0) * yolo(1,0) * 1) * 4) * 5
= ((1 * 1 * 1) * (1 * 1 * 1) * 4) * ((1 * 1 * 1) * (1 * 1 * 1) * 4) * 5
= (1 * 1 * 4) * (1 * 1 * 4) * 5
= 4 * 4 * 5
= 80
y mod x = y; jika x > y
yolo(x,y) = (yolo(y,x mod y)) ^ 2 * y; untuk x > y dan y > 0
Nomor 49:
yolo(9,y) = 4 yolo(y, 9 mod y) * yolo(y, 9 mod y) * y = 4
Cari nilai y agar 9 mod y = 1, yaitu y = 4. Karena:
yolo(4, 9 mod 4) * yolo(4, 9 mod 4) * 4 = 4
yolo(4, 1) * yolo(4, 1) * 4 = 4
dan yolo(4, 1) = 1 (seperti nomor 48), maka:
1 * 1 * 4 = 4 (benar)
Sehingga y = 4.
Semoga membantu. Benarkan aku jika salah. ![]()
Toolkit SMA N 1 Surakarta
@Lukman Hakim: Bisa dicek lagi dulu, Gan? Sudah dicoba (bahasa C++) berhasil.
#include <iostream>
int yolo(int x, int y) {
if (y == 0) return x;
else return yolo(y, x % y) * yolo(y % x, x % y) * y;
}
int main() {
std::cout << yolo(9, 4);
}
:D
Masuk untuk menulis jawaban
No 49, jawabannya : D.4
kalau y = 4,
yolo = yolo(4, 9 mod 4) x yolo(4 mod 9, 9 mod 4) x 2;
karena 9 mod 4 = 1, dan 4 mod 9 = 4, maka :
yolo = yolo(4, 1) x yolo(4, 1) x 4
yolo = 1 x 1 x 4 = 4
Salah gan,
yolo(4,1) * yolo(4,1) * 4 kan belum memenuhi syarat klo y nya = 0
jadi, yolo(1,0) * yolo(1,0) * 4 * yolo(1,0) * yolo(1,0) * 4 = 16 (salah)
Y nya itu 2
yolo(1,0) * yolo(1,0) * 2 * yolo(1,0) * yolo(1,0) * 2 = 4 (Benar)