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

Cum calculez cât mai repede suma tuturor numerelor cuprinse între două numere date a și b fără acestea exemplu pentru a egal cu 6 și b egal cu 3 ar trebui să răspunzi 9(5+4). ​

Răspunsuri la întrebare

Răspuns de andrei750238
6

Folosim formula pentru suma primilor n termeni ai unei progresii aritmetice :

Suma = \frac{n*(a_{1}+a_{n} )}{2}

n - numarul de termeni

a1 - primul termen

an - ultimul termen

In cazul nostru, avand nevoie de termenii cuprinsi intre a si b (fara acestia) variabilele noastre sunt :

n = b-a-1

a1 = a+1

an = b-1

Astfel, formula devine :

Suma = \frac{(b-a-1)*(a+1+b-1)}{2} =  \frac{(b-a-1)*(a+b)}{2}

IMPLEMENTARE C/C++ :

#include <iostream>

using namespace std;

int main(){

//Declaram variabilele

int a,b,n,s=0;

//Citim a si b

cout << "Introduceti a,b : ";

cin >> a >> b;

if(a>b)swap(a,b);

//Calculam suma conform formulei gasite

s = (b-a-1)*(a+b)/2;

//Afisare rezultat

cout << "Suma este " << s;

}

Anexe:

andrei750238: Prgramul are o complexitate O(1)
Este deci mult mai eficient decat varianta clasica in care adunam fiecare numar - algoritm care are o complexitate O(n)
Alte întrebări interesante