Pagini recente » Cod sursa (job #1180167) | Cod sursa (job #1817991) | Cod sursa (job #163986) | Cod sursa (job #509974) | Cod sursa (job #1344375)
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <set>
#include <vector>
#include <algorithm>
#include <limits>
using namespace std;
typedef int ull;
ull find_smallest_larger(ull n, vector<ull> & squares) {
int index = 0;
while (n > squares[index]) {
index++;
}
return squares[index];
}
int main(int argc, char * argv[]) {
vector<ull> squares;
int sq = 0;
while (sq * sq <= 1000000) {
squares.push_back(sq * sq);
sq++;
}
FILE * i = fopen("progresie.in", "r");
FILE * o = fopen("progresie.out", "w");
int T, N, R;
fscanf(i, "%d\n", &T);
while (T--) {
fscanf(i, "%d %d\n", &N, &R);
ull tr = 1;
ull incr = tr;
ull count = 0;
while (true) {
ull sq = find_smallest_larger(incr, squares);
if (incr == sq) {
count++;
incr += R;
if (count >= N) {
fprintf(o, "%d\n", tr);
break;
}
}
else if (incr >= sq - sqrt(sq) + 1 && incr <= sq) {
count++;
incr += R;
if (count >= N) {
fprintf(o, "%d\n", tr);
break;
}
}
else {
tr++;
incr = tr;
count = 0;
}
}
}
return 0;
}