Pagini recente » Cod sursa (job #2515265) | Cod sursa (job #340620) | Cod sursa (job #2924838) | Cod sursa (job #1926136) | Cod sursa (job #2257630)
#include <fstream>
#define si unsigned int
using namespace std;
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
si v[67000];
si sol[67000];
si sol2[67000];
int caut_bin(int nr,int dre)
{
int dr=dre;
int st=0;
while(dr>=st)
{
int mij=(dr+st)/2;
if(v[mij]==nr)
return mij;
else
if(v[mij]>nr)
dr=mij-1;
else
st=mij+1;
}
return -1;
}
int main()
{
si s=0;
si cs=1;
for(int i=1;i<=31;i++)
cs*=2;
int c=1;
while(s<cs)
{
s+=c;
v[c]=s;
c++;
}
int teste,n;
fin>>teste;
for(int pas=1;pas<=teste;pas++)
{
fin>>n;
int nr_sol=0;
int d=1;
while(v[d]<n)
d++;
for(int i=d;i<=c;i++)
{
int nr=v[i]-n;
int resolve=caut_bin(nr,i);
if(resolve!=-1&&resolve+1!=i)
{
nr_sol++;
sol2[nr_sol]=resolve+1;
sol[nr_sol]=i;
}
}
fout<<nr_sol<<"\n";
for(int i=1;i<=nr_sol;i++)
fout<<sol2[i]<<" "<<sol[i]<<"\n";
}
return 0;
}