Pagini recente » Cod sursa (job #1281344) | Borderou de evaluare (job #1567863) | Istoria paginii runda/concurs_2 | Cod sursa (job #3286069) | Cod sursa (job #1736426)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int T,N,a[12000][2],nr;
inline LL Sum(int i,int j){
return (j-i+1)*i+((j-i)*(j-i+1))/2;
}
int main(){
ifstream f("consecutive.in");
ofstream g("consecutive.out");
int i,l,r,mij;
LL x;
f >> T;
while(T--){
f >> N;
nr = 0;
for(i = 2; Sum(1,i) <=N; ++i){
if(Sum(1,i) == N){
a[++nr][0] = 1 , a[++nr][1] = i;
break;
}
l = 1 , r = N/2+1;
while(l <= r){
mij = (l+r)/2;
x = Sum(mij-i+1,mij);
if(x == N){
a[++nr][0] = mij-i+1 , a[nr][1] = mij;
break;
}
else if(x < N)
l = mij+1;
else r = mij-1;
}
}
g << nr << '\n';
for(i = 1; i <= nr; ++i)
g << a[i][0] <<' '<<a[i][1] << '\n';
}
f.close();
g.close();
return 0;
}