【題解】Luogu P1067 【多项式输出】

这题坑点略多,居然花了我两次数据下载

坑点如下:

  • 第一项前无‘+’号

  • 常数项与一次项是不同的概念

  • 注意系数为1,-1和0的情况

然后直接模拟即可,当然,为了方便模拟

分三步:

第一步:单独判号输出第一项

第二步:循环输出第二到倒数第三项

第三步:单独判号输出一次项(这个别漏了)

第四步:输出常数项


程序如下:(想抄就复制吧,反正OI是自己的事)

    #include<cstdio>
    using namespace std;
    int main(){
        int time;//次数
        scanf("%d",&time);
        int coefficient[101];//系数
        for(int i = 0;i < time + 1;i++){
            scanf("%d",&coefficient[i]);//其中第i个整数表示第time - i + 1次项的系数
        }
        //先判最高此项,分0,1,-1的情况
        if(coefficient[0] == 1){
            printf("x^%d",time);
        }else if(coefficient[0] == -1){
            printf("-x^%d",time);
        }else if(coefficient[0] == 0){
            printf("");
        }else{
            printf("%dx^%d",coefficient[0],time);
        }
        //循环判次高项~二次项,分0,1,-1,和正负数的情况
        for(int i = 1;i < time - 1;i++){
            if(coefficient[i] == -1){
                printf("-x^%d",time - i);
            }else if(coefficient[i] == 1){
                printf("+x^%d",time - i);
            }else if(coefficient[i] == 0){
                printf("");
            }else{
                if(coefficient[i] > 0){
                    printf("+%dx^%d",coefficient[i],time - i);
                }else{
                    printf("%dx^%d",coefficient[i],time - i);
                }
            }
        }
        //再判一次项分0,1,-1,和正负数的情况
        if(coefficient[time - 1] == -1){
                printf("-x");
        }else if(coefficient[time - 1] == 1){
                printf("+x");
        }else if(coefficient[time - 1] == 0){
                printf("");
        }else{
            if(coefficient[time - 1] > 0){
                printf("+%dx",coefficient[time - 1]);
            }else{
                printf("%dx",coefficient[time - 1]);
            }
        }
        //最后判常数项,分正负和0
        if(coefficient[time] > 0){
            printf("+%d",coefficient[time]);
        }else if(coefficient[time] == 0){
            printf("");
        }else if(coefficient[time] < 0){;
            printf("%d",coefficient[time]);
        }
        return 0;
    }