Cod sursa(job #1805339)

Utilizator alex.grigorasAlex Grigoras alex.grigoras Data 13 noiembrie 2016 17:48:10
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.38 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <math.h>
 
int IsInArray(int x)
{
	unsigned long long i = sqrt(double(x-1))+1;
	unsigned long long v2 = i*i;
    unsigned long long v1 = v2-i;
	unsigned long long v3 = v2+i;
    if(v1 < x && x <= v2)
    {
        return 1;
    }
	return 0;
}
 
int RespectsCondition(unsigned long long v, int n, int r)
{
	return 1;
	//if it fits in a bloc
	unsigned long long i = sqrt(double(v-1))+1;
	if(v+(n-1)*r <= i*i)
	{
		return 1;
	}
	else
	{
		return 0;
	}

	/*n--;
	v+=r;
    while(n>0)
    {
        if(IsInArray(v) == 0)
        {
            return 0;
        }
        v +=r;
        n--;
    }*/

	return 1;
}
 
int main()
{
    clock_t begin = clock();
    FILE* fin = fopen("progresie.in","r");
    FILE* fout = fopen("progresie.out","w");
  
    int T;
    fscanf(fin, "%d", &T);
    for(int t=0; t<T; t++)
    {
        int n, r;
        fscanf(fin, "%d %d", &n, &r);
		bool done = false;
        for(unsigned long long i = 1; i<=ULLONG_MAX; ++i)
        {
			for(unsigned long long j = i*i-i+1; j<=i*i && j <= ULLONG_MAX; ++j)
				if(RespectsCondition(j, n, r))
				{
					fprintf(fout, "%llu\n", j);
					done = true;
					break;
				}

			if(done)
			{
				break;
			}
        }
    }
 
    //fprintf(fout, "%llu\n", clock() - begin);
	return 0;
}