Diberikan fungsi seperti di bawah ini. Berapakah nilai dari f(8, 9, 4, 5, 6, 10000)?
function f (a, b , pa, pb, pab, n: longint): longint;
var
total: long int;
i: long int;
begin
i := 0;
total := 0;
while (total < n) do
begin
i := i + 1;
if (i mod a = 0) and (i mod b = 0) then
total := total + pab
else if i mod a = 0 then
total := total + pa
else if i mod b = 0 then
total := total + pb;
end;
f := i;
end;
program tersebut memiliki maksud
jika suatu bil habi dibagi 8 maka ksih nilai total 4 // dr pernyatan if kedua
jika suatu bil habis dibagi 9 kasih nilai total 5 (Pb) // dr pernyatan if ketiga
jika suatu bil hbis ibagi 8 dan 9 kasih nilai total 6 (Pab) // dr prnyataan if prtama
lalu kita disuruh untuk mencari nilai i yang tidak memenuhi pernyataan total < N imana N = 10000 dimana i dimulai dari 0, 1, 2, dst
karena nilai total didapatkan dari penjumlahan nilai2 dari operasi diatas, maka kita harus mencari berapa nilia totl yang memenuhi.
dr operasi if diatas membentuk pola setiap i kelipatan 72 dngan nilai total setiap kelipatan 72 adalah 73 hingga nilai i dapat kita dapatkan dari 10.000 dibagi 73 setara dngan 136 sisa 72 agar mmenuhi maka dapat dibulatkn menjadi 137 maka nili i adalah 137 X 72 adalah 9864
Siswa MAN 2 KUDUS
#include<bits/stdc++.h>
using namespace std;
int f(int a, int b, int pa, int pb, int pab, int n){
int total=0, i=0;
while(total<n){
i++;
if(i%a==0 && i%b==0){
total+=pab;
}else if (i%a==0){
total+=pa;
}else if (i%b==0){
total+=pb;
}
}
cout<<i;
return i;
}
int main(){
f(8,9,4,5,6,10000);
return 0;
}
asumsikan nilai i terakhir habis dibagi 9 dan 8
jadi nilai total akhir :
total = 4(i/8) + 5(i/9) - 4(i/72) - 5(i/72) + 6(i/72)
total = 4(i/8) + 5(i/9) - 3(i/72)
total = (73/72)i (1)
karena nilai total akhir >= 10000 (agar looping bisa berhenti)
maka total >= 10000 (2)
subtitusi persamaan (1) ke (2)
(73/72)i >= 10000
i >= 9863.013698630137
i > 9863
jadi looping akan berhenti ketika nilai i = 9864
https://ideone.com/rzlUnT
Masuk untuk menulis jawaban
liat aja program ideone
Sejak kapan nilai i harus mendekati 10 ribu?
yang penting 4(i/8) + 5(i/9) - 3(i/72) lebih besar sama dengan 10000
bukannya nilai i terakhirnya 9936?
yang lebih mendekati 10000