一元n次多项式可用如下的表达式表示:

f (x) = anxn+ an-1xn-1 + ... + a1x + a0,a0≠0

首先分析题目,题目的意思很简单,就是给定几个数,然后按照要求进行输出就行了,这通常被称为模拟,即题目说什么,我们就模拟着去做什么。

先进行输入,因为题目给定的n的范围是[1,100],所以用int去存储值就行了

在这里有一个小点需要注意,因为题目的多项式输出其中x的次方是倒着输出的,考虑到下面的遍历循环是倒着来的,所以这里我们存储值的时候也应该要倒着存储值。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i;
    int a[110];
    scanf("%d",&n);
    for (i=n;i>=0;i--){
        scanf("%d",&a[i]);
    return 0;
    }
n = int(input())
lst = list(map(int,input().split()))

然后根据题目描述的格式进行输出,在这里有一个注意点,主要是关于0/1/-1的讨论问题,还有就是首项、x的一次方、尾项的问题。我在第一个模拟的时候,由于逻辑比较混乱写了一大堆if...else,那样导致的结果就是逻辑很乱、代码不简洁、容易出差错。

所以,我们需要先分析这几个问题的关键。

首先就是如果用单纯的if...else去输出的话,就会发现其非常的繁琐,因为要不断的讨论0/-1/1以及大于0,小于0的问题,所以在这里我决定依次输出符号、系数、x的次方,再对里面的某些特殊情况进行单独讨论

1、对所有元素进行遍历,如果系数为0的话,就什么都不用输出,并且跳过这一层循环。

2、首项元素单独进行判断,如果首项元素是负数,就输出一个负号,为正就什么都不输出。

3、如果不是首项元素,为正输出‘+’,为负输出‘-’

4、再进行下一层系数的判断,如果是1/-1就不需要输出其系数,否则就输出原值的绝对值

5、然后到x的次方的判断,项数为最后一项的话,即i=0的时候,就不需要输出x,不为最后一项的话,还需要再进行一次判断,如果是次方为1的话,就值输出一个x,如果不是,就输出x的i次方。

总的过程大概就是以上的步骤,现在根据这些步骤来编写代码,如下所示:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,i;
    int a[110];
    scanf("%d",&n);
    for (i=n;i>=0;i--){
        scanf("%d",&a[i]);
    }
    for (i=n;i>=0;i--)
    {
        if (a[i]==0) continue;
        if (i==n){
            if (a[i]<0) cout<<'-';
        }
        else{
            if (a[i]<0) cout<<'-';
            else cout<<'+';
        }
        if ((a[i]==1 || a[i]==-1) && i!=0) ;
        else cout<<abs(a[i]);
        if (i==0) ;
        else {
            if (i==1) cout<<'x';
            else cout<<"x^"<<i;
        }
    }
    
    return 0;
}
n = int(input())
lst = list(map(int,input().split()))
count = len(lst)-1
for i in lst:
    if i==0:
        count-=1
        continue
    if count==len(lst)-1:
        if i<0:
            print('-',end='')
    else:
        if i>0:
            print('+',end='')
        else:
            print('-',end='')
    if ((i==1 or i==-1) and count!=0):
        pass
    else:
        print(abs(i),end='')
    if count==0:
        pass
    else:
        if count==1:
            print('x',end='')
        else:
            print(f'x^{count}',end='')
    count-=1