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

1. Să se calculeze: S=1+3+5+...+nr, a) unde nr este un număr impar mai mic sau cel mult egal cu n, n număr natural nenul dat​

Răspunsuri la întrebare

Răspuns de andrei750238
3

► Varianta simpla, ciclu repetitiv

#include <iostream>

using namespace std;

int main() {

int n, suma=0;

cout << "Numar : ";

cin >> n;

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

 suma += i;

cout << "Suma este " << suma;

}

► Varianta eficienta, matematica

S=(1+2+3+...+nr) - (2+4+.....+nr-1)

S=(1+2+3+....+nr) - 2(1+2+...+(nr-1)/2)

◘ Stiind formula pentru suma gauss 1+2+...+x = x(x+1)/2 ajungem la

S = nr*(nr+1)/2 - (nr-1)/2*((nr-1)/2)+1)

#include <iostream>

using namespace std;

int main() {

int n, suma, nr;

cout << "Numar : ";

cin >> n;

if (n % 2 == 0) nr = n - 1;

else nr = n;

suma = nr * (nr + 1) / 2 - (nr - 1) / 2 * ((nr - 1) / 2 + 1);

cout << "Suma este " << suma;

}

Alte întrebări interesante