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

(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.
white2004: ok
white2004: gata

Răspunsuri la întrebare

Răspuns de rossetta
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;
}
Alte întrebări interesante