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