Rezolvare completă PbInfo #960 sirk

La testul de selecție la Centrul de Excelentă în Informatică din acest an, prima problemă ne cere să studiem un șir S de numere naturale nenule ai cărui primi termeni sunt:
1, 2, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 2, 3...
să deducem regula prin care a fost construit și apoi să descoperim cel de-al K-lea termen al șirului S.

Știe cineva cum se rezolvă această problemă?

Cerinţă

Scrieţi un program care să determine cel de-al K-lea termen al șirului S.

Date de intrare

Programul citește de la tastatură numărul natural nenul K.

Date de ieșire

Programul va afișa pe ecran un număr natural reprezentând cel de-al K-lea termen al șirului S.

Restricții și precizări

  • 1 ≤ K ≤ 2000000000, număr natural
  • termenii șirului sunt numere naturale nenule strict mai mici decât 30000

Exemplu 1

Intrare

20

Ieșire

2

Explicație

K=20
Șirul S: 1, 2, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2 , 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 2, ...
Se observă că cel de-al K-lea termen al șirului S este 2, valoare care se va afișa.

Exemplu 2

Intrare

5000

Ieșire

30

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema sirk:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int k, gr, p, cif;
    cin >> k;
    gr = sqrt(k);
    if(gr * gr != k)
        gr ++;
    p = k - (gr - 1)*(gr - 1); //pozitia in grupa
    if(p <= gr)
        cif = gr + 1 - p;
    else
        cif = p - gr + 1;
    cout << cif << endl;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #960 sirk

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #960 sirk de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!