문제에 Luogu P1067 솔루션

이 질문은 단지 일회성에 매우 신중

나에게이 부주의 곤약은 세 가지 테스트 포인트를 다운로드

코드 첫

#include <bits/stdc++.h>
using namespace std;
//以上两行就不解释了
int a[110],n;//a数组记录系数,n代表最高几次项
int main() {
    scanf("%d",&n);
    for(int i=n; i>=0; i--)
        scanf("%d",&a[i]);
//先输入
    for(int i=n; i>=1; i--)//循环输出开始
        if(a[i]!=0)//首先输出的项的系数不得为0
            if((a[i]<0||abs(a[i]==1))&&i!=n)//a为负数或为1和负1在一起操作
                if(a[i]==1)//a为一的话直接输出+x^i
                    if(i>1)//如果i=1的话要加个特判
                        cout<<"+x^"<<i;
                    else cout<<"+x";
                else if(a[i]==-1)//跟上面差不多
                    if(i>1)
                        cout<<"-x^"<<i;
                    else cout<<"-x";
                else//如果是负数且不是1or-1就直接输出那个数
                    if(i>1)//一样要加特判
                        cout<<a[i]<<"x^"<<i;
                    else cout<<a[i]<<"x";
            else if(a[i]>0&&i!=n)//如果>0就要在前面输加号(当然,如果次数是1是不能这样输出的)
                if(i>1)//若=1就不用输出^1
                    cout<<"+"<<a[i]<<"x^"<<i;
                else cout<<"+"<<a[i]<<"x"; 
            else if(i==n)//若是第一个要输出的数就不必输出加号
                if(a[i]==-1)cout<<"-x^"<<i;
                else if(a[i]==1)cout<<"x^"<<i;
                else if(a[i]!=0)cout<<a[i]<<"x^"<<i;
    if(a[0]>0)cout<<"+"<<a[0]<<"\n";//=0就只输出系数
    else if(a[0]!=0)cout<<a[0]<<"\n";
    return 0;//圆满完工
}

일반적으로, 물은 여전히 ​​매우 제목입니다 조심하는 것입니다.

추천

출처www.cnblogs.com/xuan-wind/p/11319465.html