Cod sursa(job #1609267)

Utilizator relu.draganDragan Relu relu.dragan Data 22 februarie 2016 18:17:28
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
using namespace std;
ifstream in("progresie.in");
ofstream out("progresie.out");
bool inSequence(int x)
{
    // K(K - 1)+1 <= x <= K^2
    int root = (int)(sqrt(x));

    if (root*root == x)
        return true;

    if (x >= root*(root+1) + 1)
        return true;
    else
        return false;


}
bool isFirstNumber(int x, int R, int N)
{


    for (int i = 0; i < N; i++)
    {
        if (!inSequence(x + i*R))
            return false;
    }
    return true;

}
int main()
{
    int T;
    in >> T;
    for (int i = 0; i < T; i++)
    {

        int N, R;
        in >> N >> R;
        int M = (N - 1) * R + 1;
        int supLim = M*(M-1) + 1;
        bool foundLesser = false;
        for (int j = 1; j < supLim; j++)
        {
            if (isFirstNumber(j, R, N))
            {


                out << j << "\n";
                foundLesser = true;
                break;
            }
        }
        if (!foundLesser)
            out << supLim << "\n";
    }
    return 0;
}