Pagini recente » Cod sursa (job #1913620) | Cod sursa (job #3220321) | Cod sursa (job #3282297) | Cod sursa (job #1709929) | Cod sursa (job #1710031)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10000],b[10000];
int n=0,i,x,j,count=0;
FILE *f,*g;
f=fopen("consecutive.in","r");
g=fopen("consecutive.out","w");
if(!f || !g)
{
printf("Nu merg fisierele");
return -1;
}
if(fscanf(f,"%d",&n)!=1)
{
printf("Nu sunt destule informatii");
return -11;
}
for(i=1;i<=n;i++)
{
if(fscanf(f,"%d",&x)==1){
count=0;
if(x%2==1)
{count++;
for(j=3;j<=x/2;j+=2)
if(x %j==0 && ((x/j)-(j/2))>0)
{count++;
a[count]=((x/j)-(j/2));
b[count]=((x/j)+(j/2));
}
fprintf(g,"%d\n",count);
fprintf(g,"%d %d\n",x/2,x/2+1);
for(j=2;j<=count;j++){
fprintf(g,"%d %d\n",a[j],b[j]);
}
}
else
{
for(j=3;j<x/2;j++)
if(j%2==1 && x%j==0 && ((x/j)-(j/2))>0)
{
count++;
a[count]=(x/j)-(j/2);
b[count]=(x/j)+(j/2);
}
else
if(j%2==0 && x%(x/j+x/j+1)==0 && ((x/j)-(j-2)/2)>0)
{
count++;
a[count]=(x/j)-((j-2)/2);
b[count]=(x/j)+((j-2)/2);
}
fprintf(g,"%d\n",count);
for(i=1;i<=count;i++)
fprintf(g,"%d %d\n",a[i],b[i]);
}
}
else
{
printf("Nu sunt destule informatii");
return -11;
}
}
fclose(f);
fclose(g);
return 0;
}