Cerinţa
Se consideră şirul 1, 2,1, 3,2,1, 4,3,2,1, ..., în care prima grupă este formată din numărul 1, a doua grupă este formată din numerele 2,1, …, a k-a grupă este formată din numerele k,k-1,...,2,1.
Pentru un număr natural dat n, să se determine al n-lea termen din şir.
Date de intrare
Programul citeşte de la tastatură numărul n
Date de ieşire
Programul va afişa pe ecran numărul x, reprezentând al n-lea termen din şir.
Restricţii şi precizări1 ≤ n ≤ 1.000.000.000
Exemplu
Date de intrare
14
Date de ieşire
2
IN C++
(PROBLEMA 243 DE PE PBINFO)
fredyrychfred:
eu am o solutie mai eficienta....scrie din nou intrebarea ca sa pot sa ti o dau...daca vrei.
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
int rad = sqrt(2 * n) + 2;
while (rad * (rad + 1) / 2 >= n)
rad--;
n -= rad * (rad + 1) / 2;
rad++;
int sol = rad - n + 1;
cout << sol;
return 0;
}
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
int rad = sqrt(2 * n) + 2;
while (rad * (rad + 1) / 2 >= n)
rad--;
n -= rad * (rad + 1) / 2;
rad++;
int sol = rad - n + 1;
cout << sol;
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Engleza,
9 ani în urmă