Pagini recente » Cod sursa (job #1708548) | Istoria paginii documentatie/textile | Cod sursa (job #1691346) | Cod sursa (job #1050) | Cod sursa (job #1805321)
#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)
{
//if it fits in a bloc
/*unsigned long long i = ceil(sqrt(double(v)));
if(v+(n-1)*r <= i*i)
{
return 1;
}*/
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;
}