首項,係數(0、1、其他),次方(0、1、其他)、正負號。
只有0的情況要額外考慮。
/* ACM 392 Polynomial Showdown
* mythnc
* 2011/12/21 09:15:20
* run time: 0.108
*/
#include <stdio.h>
#include <string.h>
#define MAXD 9
#define TRUE 1
#define FALSE 0
void output(int *);
int main(void)
{
int i;
int poly[MAXD] = { 0 };
while (scanf("%d", &poly[8]) == 1) {
for (i = 7; i > -1; i--)
scanf("%d", &poly[i]);
output(poly);
/* init */
memset(poly, 0, sizeof(int) * MAXD);
}
return 0;
}
void output(int *p)
{
int i, first;
for (i = 8, first = TRUE; i > -1; i--) {
if (p[i] == 0)
continue;
/* first element */
if (first) {
first = FALSE;
if (p[i] < 0)
putchar('-');
}
else if (p[i] > 0)
printf(" + ");
else
printf(" - ");
/* coefficient */
if (p[i] > 1 && i != 0)
printf("%d", p[i]);
else if (p[i] < -1 && i != 0)
printf("%d", -p[i]);
/* degree */
if (i > 1)
printf("x^%d", i);
else if (i == 1)
putchar('x');
else
printf("%d", p[i] >= 0 ? p[i] : -p[i]);
}
if (first)
putchar('0');
putchar('\n');
}
沒有留言:
張貼留言