TYVJ 1103 多项式输出 解题报告
纯模拟,考虑0啊,1啊,-1啊等的特殊情况就行了。。。
代码如下:
#include <stdio.h> #include <stdlib.h> const char xishu[2][4] = {"%+d", "%d"}; void output(int a, int b, int *c) { if(a == 0){ return; } if(b == 0){ printf(xishu[*c], a); }else if(abs(a) == 1){ if(*c){ if(a == -1){ printf("-"); } }else{ if(a == 1){ printf("+"); }else{ printf("-"); } } }else{ printf(xishu[*c], a); } //上面输出系数 if(b == 0){ return; }else if(b == 1){ printf("x"); }else{ printf("x^%d", b); } //上面输出x if(*c){ *c = 0; } } int main(int argc, char **argv) { int i, j = 1; int n, a; scanf("%d", &n); for(i = n; i >= 0; i--){ scanf("%d", &a); if(i == n){ output(a, i, &j); }else{ output(a, i, &j); } } if(j){ printf("0"); } printf("\n"); return 0; }