Monday, October 10, 2016

UVa 392 Polynomial Showdown

UVa 392 Polynomial Showdown


Just conditioning, loads of ifs

If youre getting PE or WA just test with some isolated values for different coefficients. Some of my test cases are.
0 0 0 1 22 -333 0 1 -1
0 0 0 0 0 0 -55 5 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 -1
0 0 0 0 0 0 0 -1 0
0 0 0 0 0 0 -1 0 0
0 0 0 0 0 -1 0 0 0
0 0 0 0 -1 0 0 0 0
0 0 0 -1 0 0 0 0 0
0 0 -1 0 0 0 0 0 0
0 -1 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
x^5 + 22x^4 - 333x^3 + x - 1
-55x^2 + 5x
0
-1
-x
-x^2
-x^3
-x^4
-x^5
-x^6
-x^7
-x^8
0


#include <stdio.h>
#include <string.h>

int a[10];

int main()
{
int i, print, z;
//freopen("input.txt","r+",stdin);
//freopen("output.txt","w+",stdout);
while (scanf("%d %d %d %d %d %d %d %d %d",&a[8],&a[7],&a[6],&a[5],&a[4],&a[3],&a[2],&a[1],&a[0])==9)
{
for (i=0, z=1 ; i<9 && z; i++) //-----|Checking if the
if (a[i]) z=0; //-----|polynomial is zero

if (z) { //-----|The polynomial is found
printf("0 "); //-----|to be zero in fact
continue;
}

//-[ The first value of the equation is not printed yet ]
print=0;
for (i=8 ; i>1 ; i--)
{
if (print && a[i]) printf(" ");

if (a[i]==-1)
{
(print? printf("- x^%d",i) : printf("-x^%d",i) );
} else if (a[i]==1)
{
(print? printf("+ x^%d",i) : printf("x^%d",i) );
} else if (a[i]<0)
{
(print? printf("- %dx^%d",-1*a[i],i) : printf("%dx^%d",a[i],i) );
} else if (a[i])
{
(print? printf("+ %dx^%d",a[i],i) : printf("%dx^%d",a[i],i) );
}
//-- [ From the next time a space will seperate characters ]
if(a[i]) print=1;
}
if (a[i])
{
if (print && a[i]) printf(" ");
if (a[i]==-1)
{
(print? printf("- x") : printf("-x") );
} else if (a[i]==1)
{
(print? printf("+ x") : printf("x") );
} else if (a[i]<0)
{
(print? printf("- %dx",-1*a[i]) : printf("%dx",a[i]) );
} else if (a[i])
{
(print? printf("+ %dx",a[i]) : printf("%dx",a[i]));
}
//-- [ From the next time a space will seperate characters ]
if(a[i]) print=1;
}
i--;
if (a[i])
{
if (print && a[i]) printf(" ");
if (a[i]<0)
{
(print ? printf("- %d",-1*a[i]) : printf("%d",a[i]) );
} else if (a[i])
{
(print ? printf("+ %d",a[i]) : printf("%d",a[i]) );
}
}

printf(" ");
}
return 0;
}


Go to link download