Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Suma numerelor naturale dintr-un interval dat în C++

Dându-se două numere naturale, x și y, să se determine suma x + (x + 1) + (x + 2) + … + (y - 1) + y (suma numerelor naturale din intervalul [x; y]).

Exemplu. Pentru x = 3 și y = 5, avem suma 3 + 4 + 5 = 12.

Explicarea algoritmului

Observăm următorul lucru: suma căutată de noi, x + (x + 1) + (x + 2) + … + (y - 1) + y este egală cu suma 1 + 2 + 3 + … + (x - 1) + x + (x + 1) + … + (y - 1) + y (suma numerelor de la 1 la y), de unde scădem suma 1 + 2 + 3 + … + (x - 1) (suma numerelor de la 1 la x - 1).

Din fericire, avem formula sumei Gauss, care ne determină suma numerelor de la 1 la n, cu formula n * (n + 1) / 2:

https://i.ibb.co/b24hThv/image.png

Așadar, suma pe care o căutăm noi se poate rescrie ca și:

https://i.ibb.co/yyFKVwy/image.png

Prin urmare, trebuie doar să calculăm cele două sume Gauss (de la 1 la y și de la 1 la x - 1), după care să o scădem pe a doua din prima.

Implementare în C++

Codul arată cam așa:

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim capetele intervalului dat
    int x, y;
    cin >> x >> y;

    //Calculăm și afișăm suma numerelor naturale din intervalul [x; y]
    int sumaNr = y * (y + 1) / 2 - (x - 1) * x / 2;
    cout << sumaNr;
    return 0;
}

Alte resurse și bibliografie

Cuprinsul lecției

Se încarcă…

Citește și

Copiuțe: Cifrele unui numărSuma divizorilor unui număr în C++Mediana unui șir de valori în C++Ce este o variabilă unsigned în C++?Distanța dintre două puncte în C++Numărul de divizori al unui număr în C++Cifra maximă a unui număr recursiv în C++Cel mai mare divizor comun (CMMDC) a două numere în C++Verificare dacă un număr este palindrom în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortVerifică dacă o literă este vocală în C++Interclasarea a doi vectori în C++Află secolul unui an citit de la tastatură în C++Câte numere naturale sunt într-un interval dat? (C++)Verifică dacă un caracter este literă în C++Numere triunghiulare. Verificarea unui număr triunghiularCalculul combinărilor de n luate câte k (nCk) în C++Matrice pătratice în C++. Diagonala principală și secundarăSuma numerelor naturale dintr-un interval dat în C++Combinatorică în C++: permutări, aranjamente, combinări și alteleInstrucțiunea continue (structuri repetitive)Afișarea elementelor unui vector recursiv în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Verificare număr prim în C++ (Clasa a IX-a)Generarea șirului Fibonacci generalizat în C++Instrucțiunea break (structuri repetitive)Cum să calculezi instant 2 la puterea N în C++Complexitatea unui algoritm (timp și spațiu) în C++Maximul și minimul a n valori în C++Valoarea absolută (modulul) unui număr în C++Do while vs while în C++ - Care e diferența?Bordarea unei matrice în C++Suma 1 + 2 + 3 + ... + N în C++Șiruri de caractere în C++. Tot ce trebuie să știiComentarii în C++Funcții în C++. Ce sunt subprogrameleCitește un șir de caractere cu spații în C++Inversarea unui șir de caractere în C++Ce înseamnă endl în C++?Instrucțiunea de decizie în C++: if, else, switch, caseNumărul combinărilor în C++ (formula combinărilor)Suma elementelor unui vector recursiv în C++Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleCifrele unui număr. Prelucrarea cifrelor unui număr în C++Aria și circumferința unui cerc în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăVerificarea unui an bisect în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicNumărul permutărilor în C++ (formula permutărilor)Materia pentru olimpiada de informatică - tot ce trebuie să știiVectorii în C++: citire și afișareCMMDC recursiv a două numere naturale în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Verifică dacă un număr aparține șirului Fibonacci în C++Oglinditul unui număr în C++Verifică dacă un număr este par sau impar fără modulo în C++Numărul de divizori primi ai unui număr în C++Pointer în C++. Variabile de tipul char * (char steluță)Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorCe este o funcție void în C++?Al N-lea termen dintr-o progresie aritmeticăCel mai mic număr cu suma cifrelor N în C++Citirea și afișarea matricelor în C++Vectorii în C++: declarare și parcurgereVerifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Transformarea unei litere mici în literă mare în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Rădăcina cubică a unui număr în C++ (cube root)Transformarea unui număr din baza 10 în baza 2 în C++Numărul minim de peroane pentru o gară în C++Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Vectori de frecvență (de apariții) în C++Maximul și minimul unui vector în C++Ce înseamnă variabilă globală și locală în C++?Instrucțiunea for (structuri repetitive)Numărul aranjamentelor în C++ (formula aranjamentelor)Aria unui triunghi folosind coordonatele acestora în C++Cel mai frecvent element dintr-un șir în C++Cea mai lungă secvență de elemente crescătoare în C++Recursivitate în C++Factorialul unui număr în C++Verificare dacă șir de caractere este palindrom în C++Cum să afișezi partea întreagă a unui număr real în C++Verifică dacă un caracter este cifră în C++Al N-lea termen Fibonacci în C++Afișarea divizorilor primi ai unui număr în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Instrucțiunea while (structuri repetitive)Transformarea unui număr din baza 2 în baza 10 în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Transformarea unei litere mari în literă mică în C++Maximul și minimul a trei valori în C++Șirul lui Fibonacci în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Radicalul unui număr în C++ (rădăcina pătrată)Algoritm recursiv pentru căutare binară (clasa a X-a)Cel mai semnificativ bit în C++Divide et Impera (metodă de programare C++)Aflarea sumei primelor N sume GaussTipuri de date în C++: numere întregi, reale, caractere și alteleVerifică dacă o literă este mică sau mare în C++Oglinditul recursiv al unui număr în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Cum să citești și să afișezi în fișiere în C++Indicatorul lui Euler în C++Cifra maximă și minimă a unui număr în C++Tipul struct în C++. Ce sunt structurile de date neomogeneCiurul lui Eratostene în C++Numărul de apariții al unui număr într-un vector în C++Cifra de control a unui numărNumărul de cifre ale factorialului unui numărCăutare binară în C++Maximul și minimul a două valori în C++Inversarea unui vector în C++Structuri repetitive (while, do while, for, etc)Al N-lea termen dintr-o progresie geometricăPrima cifră a unui număr în C++Verifică dacă trei puncte sunt coliniare C++Operații cu numere mari în C++ - Toate funcțiile explicateCel mai puțin semnificativ bit în C++Instrucțiunea do while (structuri repetitive)Verifică dacă un număr dat este o putere de 2 în C++Interschimbarea a două variabile în C++ (3 metode)Codul ASCII (tabel complet)

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont