大致思路
主要就是分类讨论,将符号,系数,指数分开考虑,归类,注意第一项要特殊处理。(还有就是先从左往右找到第一个系数不为0的数在讨论,这道题不这样也可以ac,判例好像没有
5
0 0 0 2 1 1
这样的数据)
//P1067 [NOIP2009 普及组] 多项式输出
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>//abs
#define clr(x) memset(x,0,sizeof(x))
using namespace std;
int main() {
#ifdef LOCAL
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
int n;
int arr[105];
clr(arr);
cin>>n;
for(int i = n;i>=0;i--) {
cin>>arr[i];
}
int p;
for(p = n;p>=0;) {
//从左往右先找第一个不为0的系数
if(arr[p]!=0) {
break;
}
p--;
}
for(int i = p;i>=0;i--) {
if(arr[i]==0)continue;
if(i!=p) {
//符号
if(arr[i]>0)printf("+");
}
if(arr[i]<0)printf("-");
if(abs(arr[i])!=1||i==0)printf("%d",abs(arr[i]));//系数
if(i!=0)printf("x");//x
if(i!=1&&i!=0)printf("^%d",i);
}
}