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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

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