Pagini recente » Cod sursa (job #328380) | Cod sursa (job #388378) | Cod sursa (job #2707338) | Cod sursa (job #1045204) | Cod sursa (job #1562603)
#include <cstdio>
#include <cmath>
inline long long solve(int gr, int n, int r){
int l, i;
long long st, x, a;
x=st=(gr-1)*(long long)gr+1;
l=gr-1;
for(i=2; i<=n; i++){
x+=r;
gr=sqrt(x);
if(((gr-1)*(long long)gr>=x)||(x>gr*(long long)(gr+1))){
gr++;
}
a=(gr-1)*(long long)gr+1;
if(x-a>gr-1){
a=(gr+1)*(long long)gr+1;
l-=a-x;
st+=a-x;
x+=a-x;
}else if(l>a+gr-1-x){
l=a+gr-1-x;
}
if(l<0){
return 0;
}
}
return st;
}
int main(){
int t, n, r, gr;
long long x;
FILE *fin, *fout;
fin=fopen("progresie.in", "r");
fout=fopen("progresie.out", "w");
fscanf(fin, "%d", &t);
for(; t; t--){
fscanf(fin, "%d%d", &n, &r);
gr=1;
while((x=solve(gr, n, r))==0){
gr++;
}
fprintf(fout, "%lld\n", x);
}
fclose(fin);
fclose(fout);
return 0;
}