题解 P1067 【多项式输出】

· · 题解

#include<iostream>
using namespace std;
int a[110];
int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n+1; i++)
        cin>>a[i];
    int nn=n;
    if(a[1]!=1&&a[1]!=-1&&a[1]!=0) {
        if(nn!=0)
            cout<<a[1]<<"x^"<<nn;
        else
            cout<<a[1];
    } else if(a[1]==1) {
        if(nn!=0)
            cout<<"x^"<<nn;
        else
            cout<<a[1];
    }
    else if(a[1]==-1) {
        if(nn!=0)
            cout<<"-x^"<<nn;
        else
            cout<<a[1];
    }
    for(int i=2; i<n; i++) {
        if(a[i]>0&&a[i]!=1) {
            nn--;
            cout<<'+'<<a[i]<<"x^"<<nn;
        } else if(a[i]<0&&a[i]!=-1) {
            nn--;
            cout<<a[i]<<"x^"<<nn;
        } else if(a[i]==0)
            nn--;
        else if(a[i]==1) {
            nn--;
            cout<<'+'<<"x^"<<nn;
        } else if(a[i]==-1) {
            nn--;
            cout<<'-'<<"x^"<<nn;
        }
    }
    if(a[n]==1)
    cout<<'+'<<'x';
    if(a[n]==-1)
    cout<<'-'<<'x';
    else if(a[n]>1)
    cout<<'+'<<a[n]<<'x';
    else if(a[n]<0)
    cout<<a[n]<<'x';
    if(a[n+1]>0)
        cout<<'+'<<a[n+1];
    else if(a[n+1]<0)
        cout<<a[n+1];
}