http://www.luogu.org/problem/show?pid=1067
看似简单的模拟题,但是许多细节要考虑。具体看代码注释,这样写比较清晰
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#define ms(i,j) memset(i, j, sizeof(i));
using namespace std;
int n;
int main()
{
scanf("%d", &n);
for (int i=n;i>=0;i--)//倒序方便指数计算
{
int a;
scanf("%d", &a);//输入系数
if (a==0) continue;//系数不为0,如果为0则不需要输出
//处理符号
if (i!=n) if (a>0) printf("+");
if (a<0) printf("-");
//处理系数
if (abs(a)!=1||i==0) printf("%d", abs(a));
//处理x
if (i!=0) printf("x");
//处理^b
if (i!=1&&i!=0) printf("^%d", i);
}
return 0;
}