Pagini recente » Cod sursa (job #1889467) | Cod sursa (job #3213706) | Cod sursa (job #904471) | Cod sursa (job #1981297) | Cod sursa (job #1080351)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("progresie.in");
ofstream out("progresie.out");
long long properStart(long long label, int nr, long long ratie){
long long start = label * (label - 1) + 1, poz = start, maxIncrement = label - 1, k, inc;
while (nr--){
k = ceil( sqrt(poz) );
inc = k * (k - 1) - poz + 1;
if (inc > 0){
poz += inc;
start += inc;
maxIncrement -= inc;
if (maxIncrement < 0)
return -1;
}
maxIncrement = min(maxIncrement, k * k - poz);
poz += ratie;
}
return start;
}
long long compute(int nr, long long ratie){
long long start = -1;
for (long long k = 1 ; start == -1 ; k++)
start = properStart(k, nr, ratie);
return start;
}
int main(){
int times, n, r;
in >> times;
while (times--){
in >> n >> r;
out << compute(n, r) << "\n";
}
return 0;
}