Informatică, întrebare adresată de GamesLioNyt, 8 ani în urmă


2. Se considera algoritmul alaturat, descris in pseudocod.

Anexe:

Răspunsuri la întrebare

Răspuns de 1Viserys
1

a. ce se intampla practic este ca la a aduni patratele numerelor impare de la 1 la n si din el scazi patratele numerelor pare de la 1 la n.

deci vei avea 25 + 1 - 4 + 9 - 16 + 25 - 36 = 4

b. C++

#include <iostream>

using namespace std;

int main()

{

int a, n, i;

cin>>a>>n;

for(i=1; i<=n; i++)

{

if(i%2==0) a=a-i*i;

else a=a+i*i;

}

cout<<a;

return 0;

}

c.

a=18.

daca n=1 atunci a = 18 + 1 = 19. nu e ok

daca n=2 atunci  a = 18 + 1 - 4 = 15. nu e ok

sarim cazul n=3 deoarece aici doar adaugam 9 la valoarea obtinuta anterior

daca n=4 atunci a = 18 + 1 - 4 + 9 - 16 = 8, adica raspunsul cautat. deci n=4.

d.

ok pai incepem cu a=0.

daca n e par, vrem ca a sa fie 0 la sfarsit. putem obtine asta foarte usor daca inlocuim secventa respectiva cu a<-0. pana aici ne convine

dar ce se intampla daca n e impar?

pai predecesorul sau va fi mereu par, deci fix inainte sa ajungem la el,a devine 0 (sau a este direct 0 daca n=1 si nu are predecesor). atunci daca vom face a<-a+i*i o sa facem de fapt a<-0+i*i ceea ce este echivalent cu a<-i*i, deci pentru n impar valoarea finala o sa fie fix patratul sau, ceea ce satisface cerinta.

deci raspunsul este a<-0.



Alte întrebări interesante