/*
   splitsen.c -- C-uitwerking van de NKP'97-opgave "Splitsen"
   (c) 10/08/'97 Meinte Boersma
*/

#include <stdio.h>

#define sqr(x) ((x)*(x))

typedef int som[6];
  /* gebruikt alleen entries 1..5 */

int t;   /* globaal houden om in "splits" af drukken */


void splits (int x, int k, som a)
{
  int i;

  if (k==0) {
    if (x==0) {
      /* correcte splitsing */
      printf("4*%d=", t);
      for (i=4; i>=2; i--) {
        printf("%d+", sqr(a[i]));
      }
      printf("%d\n", sqr(a[1]));
    }
  } else {
    a[k] = a[k+1];
    while (sqr(a[k])<=x) {
      splits(x-sqr(a[k]),k-1,a);
      a[k] += 2;
    }
  }
}


int main (void)
{
  int n, run;
  som a;   /* bewaart schrijfwijze */

  scanf("%d", &n);
  for (run=1; run<=n; run++) {
    scanf("%d", &t);
    a[5] = 1;
    splits(4*t,4,a);
    if (run<n) {
      printf("\n");
    }
  }
  return(0);
}

Generated by Java2Html