Diberikan fungsi seperti di bawah ini. Berapakah nilai yang dikembalikan dari pemanggilan fungsi cariNilai(2017,1017)?
function cariNilai(n, x: integer): longint;
var
i: integer;
n_now, x_now: integer;
ans: longint;
begin
ans := 0;
n_now := n;
x_now := x;
while (n_now > 0) do begin
ans := ans + x_now;
x_now := x_now - 1;
n_now := n_now - 1;
end;
cariNilai := ans;
end;
Dari kode diatas :
ans = 0; n_now = 2017, x_now = 1017;
ketika nilai n_now lebih besar dari 0 maka dilakukan operasi:
ans = ans + x_now; x_now--, n_now--
jadi ans = 1017+1016+1015........-999, hingga n = 2017
gunakan rumus aritmatika = ((1017+(-999))/2)*2017 = 18153, CMIIW
yang jadi penjumlahan ans itu x_now nya bukan n_nownya makannya mulainya dari 1017. n_now nya itu sebagai iterator berapakali looping itu berjalan.
bener bisma cuy
Bener Kadek. Karena mulai dari 1017+1016+.... sebanyak 2017 kali
jadi berhentinya di 2017+2016+2015+.......+0+(-1)+(-2)+.......+(-998)+(-999)
hasilnya (2017*2018/2)-(1000*999/2)=18153
SMAIT Nur Hidayah
@Kadek Surya
itu pake rumus aritmatika, rumus yang mana ya? kok saya baru tau?
@salsabila
yang
Sn=(n/2)*(a+Un)
dmn a=1017; b=-1; Un=-999; n=2017;
Masuk untuk menulis jawaban
Siswa MAN 2 KUDUS
#include<bits/stdc++.h>
using namespace std;
int cariNilai(int n, int x){
int i, n_now, x_now, ans=0;
n_now=n;
x_now=x;
while(n_now>0){
ans=ans+x_now;
x_now=x_now-1;
n_now=n_now-1;
}
cout<<ans;
return ans;
}
int main(){
cariNilai(2017,1017);
return 0;
}
nanti hasilnya 18153
FUNGSI TERSEBUT MENYTAKAN PENJUMLAHAN DR 2017 MENURUN SEBNYAK 1017 KALI (2017 + 2016 + .......... + 1001) DAN PNJUMLHAN DARI 1017 MENURUN HINGGA 1 (1017+1016+.........+2+1) JADI jawabannya adalah 1017(1018 div 2 + 3018 div 2) = 517653+1534653 = 2052306
sante lah capslocknya ajg
SBR
Bukankah fungsi tersebut begini
ans itu adalah penjumlahan dari nilai x_now
karna setiap iterasi(looping) x_now =x_now-1(setiap iterasi berkurang 1) maka bisa di simpulkan
ans=2017+2016+2015+. . . +1 = (2017*2018)/2 =2035153.