Pagini recente » Cod sursa (job #2538940) | Cod sursa (job #3222989) | Cod sursa (job #1808223) | Cod sursa (job #1128006) | Cod sursa (job #1344462)
#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[]) {
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 i = 1;
ull count = 0;
ull f_num = 1;
ull cur = f_num;
while (true) {
ull start = i * i - i + 1;
ull end = i * i;
ull next_i = i + 1;
ull next_start = next_i * next_i - next_i + 1;
ull next_end = next_i * next_i;
//cout << start << " " << end << " " << cur << " " << f_num << " " << i << " " << count << endl;
if (cur >= start && cur <= end) {
count++;
cur += R;
if (count >= N) {
fprintf(o, "%d\n", f_num);
break;
}
}
else if ((cur > end && cur < next_start) || cur < start) { //bad sequence
if (f_num >= end) {
f_num = next_start;
i = i + 1;
cur = f_num;
}
else {
f_num++;
cur = f_num;
}
count = 0;
}
else {
cur += R;
i = i + 1;
}
}
}
return 0;
}