Deskripsi Untuk Soal Nomor 42 dan 43
Perhatikan potongan kode program berikut
count := 0;
for i := 1 to n do
begin
x := i;
while (x > 0) do
begin
if (x mod 10 = 1) then
inc(count);
x := x div 10;
end;
end;
writeln(count);Apakah output dari program apabila n = 12?
Apakah output dari program apabila n = 10000?
program diatas menjumlah banyaknya angka 1 pada bilangan 1 sampai n (inklusif), jika n = 12 ,maka output = 5 jika n = 10000 maka output = 4001
jawabannya : 5
pada saat n = 1 1 mod 10 = 1 bernilai true, eksekusi increment. count = 1 pada saat n = 1 s.d 9 x mod 10 = 1 bernilai false, inc tdk di eksekusi pada saat n = 10 10 mod 10 false 10 div 10 = 1 1 mod 10 = 1 increment count count = 1; pada saat n = 11 11 mod 10 = 1 true, increment count 1 11 div 10 = 1 1 mod 10 = 1 increment count 1. count = 1 + 1 -> 2
pada saat n = 12 12 mod 10 = 1 false 12 div 10 = 1 1 mod 10 =1 increment count count = 1
total count 1 + 1 + 2 + 1 = 5
SMAN MODAL BANGSA ACEH
program tsb menghitung banyaknya jumlah angka satu dari 1 sampai n
Masuk untuk menulis jawaban
untuk nomer :
42. inputan n:= 12 maka outputnya 5, caranya sama spt diatas
untuk nomer 43 :
43. n:= 10000 => artinya nilai maxs = 10000
kita punya bilangan 5 digit abcde
dengan nilai a = 1/0
jika a:=1 maka hanya ada satu kemungkinan yaitu 10000 => jumlah angka 1 := 1
jika a:= 0 maka kita bisa mengubah keempat digit lain yaitu bcde, berikut caranya
saya punya 10 angka yaitu 0 1 2 3 4 5 6 7 8 9
saya misalkan x := pilihan angka yang terdiri dari := 0 2 3 4 5 6 7 8 9 ( 9 angka )
1 merupakan angka 1 ( 1 angka )
bcde mau kita masukan x dan 1
caranya
total banyak nya angka 1 pada bilangan antara 1-10000 adalah := 1 + 2916 + 486 + 36 + 1 = 3440
NB:= KENAPA SAYA TIDAK MENGGUNAKAN BCDE:=XXXX, KARENA XXXX TIDAK MENGANDUNG ANGKA 1 SEHINGGA TIDAK PERLU DIPERHITUNGKAN
Itu hasil bcde masing masing harus dikalikan banyak 1
jadi 2916*1, 486*2,36*3, 1*4
bgaimana cra dpetin angka 1 pda bilangan 1-10000