题目链接:https://www.luogu.org/problemnew/show/P1067

这是一个纯模拟的小怪但是需要注意一些小细节:

1.首项为正没有+号。

2.所有项系数如果是一的话就省略不写。

3.末项没有X^0而是1。

4.倒数第二项直接是X而不是X^1。

AC代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int A[];
bool sign;
int main()
{
int n;
scanf("%d",&n);
int t=n+;
for(int i=;i<=t;i++)
{
scanf("%d",&A[i]);
}
/*for(int i=1;i<=t;i++)
{
printf("%d ",A[i]);
}*/
if(A[]==)
{
printf("x^%d",n),n--;
}
else if(A[]==-)
{
printf("-x^%d",n),n--;
}
else if(A[]==) n--;
else
{
printf("%dx^%d",A[],n);
n--;
}
for(int i=;i<=t-;i++)
{
if(i==t-)
{
if(A[t-]==)
{
printf("+x"),n--;
sign=;
}
else if(A[t-]==-)
{
printf("-x"),n--;
sign=;
}
else if(A[t-]==)
{
n--;
sign=;
}
else
{
if(A[t-]>)printf("+%dx",A[t-]);
else printf("%dx",A[t-]);
n--;
sign=;
}
}
if(A[i]>&&sign==)
{
if(A[i]==)
{
printf("+x^%d",n),n--;
}
else
{
printf("+%dx^%d",A[i],n);
n--;
}
}
if(A[i]<&&sign==)
{
if(A[i]==-)
{
printf("-x^%d",n),n--;
}
else
{
printf("%dx^%d",A[i],n);
n--;
}
}
if(A[i]==&&sign==)
{
n--;
}
if(n==)
{
if(A[t]>)
{
printf("+%d",A[t]);
}
if(A[t]<)
{
printf("%d",A[t]);
}
if(A[t]==)
break;
}
} return ;
}

  

05-11 16:04