简单模拟,写的有点乱
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <set>
#include <unordered_map>
#define ms(a,b) memset((a),(b),sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
const int mod = 1e9 + 7;
const int P = 131;
const int N = 1010;
const int inf = 0x3f3f3f3f;
const ll lnf = 9e18;
int f( char a ) {
if( a >= 'a' && a <= 'z' ) return 1;
else if( a >= 'A' && a <= 'Z' ) return 2;
else if( a >= '0' && a <= '9' ) return 3;
else if( a == ' ' ) return 4;
else return 5;
}
int main() {
int n;
int a;
cin >> n;
int flag = 0;
for( int i = n; i >= 0; i-- ) {
cin >> a;
if( !i && a ) {
if( a >= 0 && flag == 0 ) printf( "%d", a );
else if( a >= 0 ) printf( "+%d\n", a );
else printf( "%d\n", a );
}
else if( i == 1 && a ) {
if( a == 1 || a == -1 ) {
if( a >= 0 && flag == 0 ) printf( "x", a );
else if( a >= 0 )printf( "+x", a );
else printf( "-x", a );
}
else if( a >= 0 && flag == 0 ) printf( "%dx", a );
else if( a >= 0 ) printf( "+%dx", a );
else printf( "%dx", a );
}
else if( a && flag == 0 ) {
if( a == 1 || a == -1 ) {
if( a >= 0 )printf( "x^%d", i );
else printf( "-x^%d", i );
}
else printf( "%dx^%d", a, i );
}
else if( a ) {
if( a == 1 || a == -1 ) {
if( a >= 0 )printf( "+x^%d", i );
else printf( "-x^%d", i );
}
else if( a >= 0 )printf( "+%dx^%d", a, i );
else printf( "%dx^%d", a, i );
}
if( a ) flag = 1;
}
return 0;
}