Rezolvare BAC Informatica 2009 – Varianta 13 – Subiectul al III-lea problema 3
Mai jos puteti gasi rezolvarea problemei 3 de la subiectul III din varianta 13 pentru examenul de bacalaureat din anul 2009
Rezolvare:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream.h> | |
#include <math.h> | |
void main() { | |
int n, k, d; | |
cin >> n; | |
d = 1 + 8 * n; | |
k = (-1 + sqrt(d)) / 2; | |
if (k * (k + 1) / 2 == n) | |
cout << 1; | |
else { | |
k++; | |
cout << 1 + k * (k + 1) / 2 - n; | |
} | |
} |
Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 
Se poate niste mici explicatii la fiecare pas va rog?
Salut. Sigur. Mai intai o mica observatie. Se poate observa ca pozitia numerelor de 1 in sir este de forma K * (K + 1) / 2, pentru K natural (1,3,6,10,15…). Deci mai intai incercam sa vedem daca n-ul nostru corespunde unei astfel de pozitii. Pentru asta rezolvam ecuatia K*(K + 1) / 2 = n sau altfel scris: K^2 + K – 2n = 0 (ecuatie de gradul 2, cu delta = 1 + 8n). De aici variabila d (delta), si k (solutia pozitiva). Daca n este de forma aceasta, afisam 1. Daca nu, n este o pozitie intre doi de 1. Pozitia 1-ului din stanga se afla in K (1 K+1 K …. x …. 1 – pe pozitia n se afla x). Crestem K-ul cu 1, pentru a ne duce pe pozitia 1-ului din dreapta, si numaram cate elemente sunt intre aceasta pozitie si n-ul nostru. Asta e numarul cautat ( intre x si 1 se afla (K + 1)(K + 2) / 2 – n + 1 numere. Sper ca am explicat cum trebuie. Spor.
mersi mult! chiar am inteles. succes cu site-ul! am avut si eu un server de metin de succes (big profit) timp de un an pe dedicatul de acasa, cumparat de mine, am facut tot de la 0, fara 1 leu. editari in sursa la greu, instalare freebsd x64, etc. acum sunt a 12-a. in cei 3 ani am avut un profesor extrem de comunist.
ideea e ca vreau sa iti spun doar ca te respect! multa bafta! fi in continuare mandru de ceea ce faci!
mersi mult! chiar am inteles. succes cu site-ul! am avut si eu un server de metin de succes (big profit) timp de un an pe dedicatul de acasa, cumparat de mine, am facut tot de la 0, fara 1 leu. editari in sursa la greu, instalare freebsd x64, etc. acum sunt a 12-a. in cei 3 ani am avut un profesor extrem de comunist.
ideea e ca vreau sa iti spun doar ca te respect! multa bafta! fi in continuare mandru de ceea ce faci!