Pagini recente » Cod sursa (job #3125050) | Cod sursa (job #98226) | Cod sursa (job #556058) | Cod sursa (job #1652925) | Cod sursa (job #2733591)
#include <bits/stdc++.h>
using namespace std;
long long t,n,r;
int main (){
ifstream cin ("progresie.in");
ofstream cout ("progresie.out");
cin>>t;
for (;t--;){
cin>>n>>r;
for (long long i=1;;i++){
long long start = i * (i-1) + 1;
long long nr = i-1;
int ok = 1;
for (long long j=1;j<n;j++){
long long poz = start + r * j;
long long block = sqrt(poz-1) + 1; /// in blocul asta ar trebui sa se afle
long long start_block = block * (block - 1) + 1;
long long end_block = block * block;
if (poz < start_block){ /// trb sa deplasez la dreapta
start += start_block - poz;
nr -= start_block - poz;
} else {
nr = min (nr,end_block - poz);
}
if (poz + nr < start_block){
/// inseamna ca nici acum nu am reusit sa il aduc in bloc
ok = 0;
break;
}
}
if (ok){
cout<<start<<"\n";
break;
}
}
}
return 0;
}