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)


Răspuns :

#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;
}