Cod sursa(job #1709547)

Utilizator UPT_LRL_TEAMUPT LRL UPT_LRL_TEAM Data 28 mai 2016 12:49:05
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.99 kb
#include <stdio.h>
#include <math.h>

#define MAX 10000

int T;
long long N;



long long sums[MAX];

FILE* fout;

long long result[10000];
int maxx;


void generateSums()
{
    for(int i=0; i<MAX; i++)
    {
        sums[i] = (i*(i+1))/2;
    }
}

void calculate()
{
    for(int i=1; i<MAX; i++)
    {
        if(sums[i]>=N)
            return;

        float y = (float)(N-sums[i]);

        float x = (float)(y/((float)i+1));
        if(x == floor(x))
        {
            result[2*maxx] = (int)x;
            result[2*maxx+1] = (int)x+i;

            maxx++;
        }
    }

}

int main()
{
  FILE *fin = fopen("consecutive.in", "r");
  fout = fopen("consecutive.out", "w");

  int v = fscanf(fin,"%d", &T);

    generateSums();

  for(int i=0; i<T; i++)
  {
    maxx = 0;
    fscanf(fin,"%lld",&N);
    calculate();
    fprintf(fout,"%d\n", maxx);
    for(int k=0; k<maxx; k++)
    {
        fprintf(fout,"%lld %lld\n",result[2*k], result[2*k+1]);
    }
  }

  fclose(fin);
  fclose(fout);

  return 0;

}