Informatică, întrebare adresată de white2004, 9 ani în urmă

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++

Răspunsuri la întrebare

Răspuns de fredyrychfred
1
#include < iostream>
#include < cmath>
using namespace std;

int main()
{long long g,x,i,n,poz,g2,poz1;
cin>>n;
if(sqrt(1+8*n)==(int)sqrt(1+8*n))g=(-1+sqrt(1+8*n))/2;
else g=(-1+sqrt(1+8*n))/2+1;
poz=n-g*(g-1)/2;
g2=g-poz+1;
cout << g2;
return 0;
}

white2004: nu am invatat cu cmath
white2004: inca
white2004: doar iostream
fredyrychfred: cmath se pune pentru a folosi radicalul
white2004: ok
white2004: am inteles
Alte întrebări interesante