Sari la conținut

Autor: Traian-Mihai Danciu

Soluția problemei patrate (OJI 2018, clasa a V-a)#

Link problemă

Această problemă poate fi accesată aici.

Cerința 1#

Primul element din pătratul \(M\) este \((2 \cdot M - 1) ^ 2\), iar ultimul este \((2 \cdot M + 1) ^ 2 - 1\). Sunt \((2 \cdot M + 1) ^ 2 - 1 - (2 \cdot M - 1) + 1 = (2 \cdot M + 1) ^ 2 - (2 \cdot M - 1) ^ 2\) elemente.

Cerința 2#

Căutăm primul număr \(T\) pentru care \((2 \cdot T - 1) ^ 2 \leq N \leq (2 \cdot T + 1) ^ 2 - 1\) (adică \(N\) să fie în intervalul de numere de pe pătratul \(T\)).

Mai jos puteți găsi o soluție neoficială care ia punctajul maxim.

#include <fstream>

using namespace std;

ifstream fin("patrate.in");
ofstream fout("patrate.out");

int main() {
    int c, n, i;
    fin >> c >> n;

    if (c == 1) {
        fout << (1 + 2 * n) * (1 + 2 * n)
                    - (1 + 2 * (n - 1)) * (1 + 2 * (n - 1));
    } else {
        int i = 0;
        while (!((2 * i - 1) * (2 * i - 1) <= n
                 && n <= (2 * i + 1) * (2 * i + 1) - 1)) {
            i++;
        }

        fout << i;
    }

    return 0;
}