Cod sursa(job #1714541)
Utilizator | Rotaru Gheorghe-Iulian iulianrotaru | Data | 8 iunie 2016 17:25:47 |
---|---|---|---|
Problema | Progresie | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva ICPC | Marime | 0.63 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("progresie.in");
ofstream g("progresie.out");
inline long long solve(long long gr,long long n,long long r){
long long st=(gr-1)*gr+1,l=gr-1,x,a;
for(int i=1;i<n;++i){
x=st+i*r;
gr=1+(int)sqrt(x-1);
a=(gr-1)*gr+1;
if(x+l<a) return 0;
if(x<a) l-=a-x,st+=a-x;
else if(x+l>a+gr-1) l=a+gr-1-x;
}
return st;
}
int main(){
int t,n,r,gr;
long long x;
f>>t;
while(t--)
{
f>>n>>r;
gr=1;
while(!(x=solve(gr,n,r))) gr++;
g<<x<<'\n';
}
return 0;
}