Tuliskanlah keluaran program berikut ini :
function meong(x: longint):integer; begin if (x = 0) then meong := 0 else if (x mod 2 = 1) and ((x div 2) mod 2 = 1) then meong := meong((x div 2) div 2) + 1 else meong := meong(x + 1) + 1; end; begin writeln(meong(888)); end.
Cupu :(
function meong(x: longint):integer; begin if (x = 0) then // Base case, bila x = 0, maka return 0 meong := 0 else if (x mod 2 = 1) and ((x div 2) mod 2 = 1) then // Literally (Jika x mod 4 = 3, maka) meong := meong((x div 2) div 2) + 1 // Literraly (x div 4) else meong := meong(x + 1) + 1; // Sampai sini udah jelas harusnya. Simulasiin aja. end; begin writeln(meong(888)); end.
32. Simulasi :
- meong(888) bakal jadi meong(891) + 3
- meong(891) + 3 bakal jadi meong(222) + 4
- meong(222) + 4 bakal jadi meong(223) + 5
- meong(223) + 5 bakal jadi meong(55) + 6
- meong(55) + 6 bakal jadi meong(13) + 7
- meong(13) + 7 bakal jadi meong(15) + 9
- meong(15) + 9 bakal jadi meong(3) + 10
- meong(3) + 10 bakal jadi meong(0) + 11
- meong(0) + 11 bakal jadi 0 + 11 = 11
Kelar, meong(888) = 11
Berdasarkan feeling terdalam gw, sepertinya soal ini dapat dicari dengan basis 4. Basis 4 dari 888 ialah 31320. Menurut gw, kita itu harus jadiin 31320 menjadi 44444, per digitnya. Jadi, bisa dicari dengan (4-3) + (4-1) + (4-3) + (4-2) + (4-0) = 11
CMIIW
Masuk untuk menulis jawaban

meong := meong(x + 1) + 1;
Meong(888) = Meong (888+1) +1 = meong(889) +1
if (x mod 2 = 1) and ((x div 2) mod 2 = 1) then meong := meong((x div 2) div 2) + 1
889 mod 2 = 1 (True) and (889 div 2) mod 2 =1 (false)
Cari yang lain
Meong (889) +1 = Meong (890) +1 +1 = Meong (891) +1+1+1
if (x mod 2 = 1) and ((x div 2) mod 2 = 1) then meong := meong((x div 2) div 2) + 1
891 mod 2 = 1 (True) and (891 div 2) mod 2 =1 (True)
Maka pakai
meong := meong((x div 2) div 2) + 1
Meong ( (891 div 2) div 2 ) +1 + 3
222+1+3 = 226
Great?
Meong ( (891 div 2) div 2 )=Meong(222) bukan 222 jadi masih manggil lagi sampai Meong(0)=0
jadi Meong(888)=Meong (889) +1 = Meong (890)+1+1= Meong (891) +2+1 = Meong(222)+3+1= Meong(223)+4+1= Meong(55)+5+1=Meong(13)+6+1= Meong(14)+7+1 = Meong(15)+8+1= Meong(3)+9+1=Meong(0)+10+1=0+10+1=11
Jadi Meong(888)=11