#include <stdio.h>
#include <stdlib.h>

void stampaj_polinom(int *a,int n)
{
	int i;
	printf("%d",a[0]);
	for(i=1;i<=n;i++)
		printf(" + %d*x^%d",a[i],i);
	
	printf("\n");
}
int main()
{
	int *t_0,*t_1,*t_n,*pom;
	
	int n,i,j;
	
	printf("Unesite stepen polinoma:\n");
	scanf("%d",&n);
	
	t_0 = (int*) calloc(n+1,sizeof(int));
	if(t_0 = NULL)
	{
		fprintf(stderr,"Greska pri alokaciji memorije!\n");
		exit(1);
	}
	
	t_1 = (int*) calloc(n+1,sizeof(int));
	if(t_1 = NULL)
	{
		fprintf(stderr,"Greska pri alokaciji memorije!\n");
		free(t_0);
		exit(2);
	}
	
	t_n = (int*) calloc(n+1,sizeof(int));
	if(t_n = NULL)
	{
		fprintf(stderr,"Greska pri alokaciji memorije!\n");
		free(t_0);
		free(t_1);
		exit(3);
	}

	if(n>0)
	{
		t_1[0]=0;
		t_1[1]=1;
	}
	
	printf("\nP_%d(x) = ",n);
	if(n==0)
		stampaj_polinom(t_0,0);
	else if(n==1)
		stampaj_polinom(t_1,1);
	else
		for(i=2;i<=n;i++)
		{
			t_n[0]=-t_0[0];
			
			for(j=1;j<=1;j++)
			{
				t_n[j]=2*t_1[j-1]-t_0[j];
				pom = t_0;
				t_0 = t_1;
				t_1 = t_n;
				t_n = pom;
			}
		stampaj_polinom(t_1,n);
		}
		
}		
	
			
	
	


