2019-05-14 P1067

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

#include
#include
#include
using namespace std;
const int maxn =110;
int A[maxn],n,m;
int main(void)
{
    cin>>n;
    for(int i=1;i<=n+1;i++)
    {
        cin>>A[i];
    }
    int flag=true;//标记第一个是否输出
    for(int i=1;i<=n+1;i++)
    {
        int m=n-i+1; //x的幂次方 
        if(A[i]!=0) //此时需要输出内容 
        {
            //首先是输出正负号!!!
            if(flag==true)//第一次输出,正号不用输出 
            {
                flag=false; 
                if(A[i]<0) printf("-");
            } 
            else//不是第一次输出,如果是正数,输出正号,否则,输出负号 
            {
                if(A[i]>0) printf("+");
                else printf("-"); 
            }
            
            //输出系数,如果系数为1或者-1,特殊处理
            if(A[i]!=1 && A[i]!=-1)
            {
                if(A[i]>0) printf("%d",A[i]);
                else printf("%d",-A[i]);
            } 
            
            //输出x的幂次方
            if(m!=0)
            {
                if(m!=1)
                    printf("x^%d",m);
                else 
                    printf("x");    
            } 
            else //m=0 
            {
                if(A[i]==-1 || A[i]==1)
                    printf("1");
            }
             
        } 
    } 
    return 0;   
}

你可能感兴趣的:(2019-05-14 P1067)