2. Se considera algoritmul alaturat, descris in pseudocod.
Răspunsuri la întrebare
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.