洛谷

https://www.luogu.org/problemnew/show/P1067

小模拟,第一次提交忘记考虑已经输出有数字之后的常数0的处理了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long

struct S{
    int x;
    int z;
    int show(int f){
        if(x==0){
            if(z==0){
                if(f)
                    printf("0");
                printf("
");
                return 0;
            }
            return f;
        }
        else{
            int o=0;
            if(x<0){
                if(x!=-1||z==0)
                    printf("%d",x);
                else{
                    printf("-");
                }
                o=1;
            }
            else{
                if(f){
                    ;
                }
                else{
                    printf("+");
                    o=1;
                }
                if(x!=1||z==0){
                    printf("%d",x);
                    o=1;
                }
            }
            if(z!=0){
                printf("x");
                o=1;
                if(z!=1){
                    printf("^%d",z);
                    o=1;
                }
            }
            else{
                printf("
");
            }
            if(o)
                return 0;
            else
                return f;
        }
    }
}s[105];

int main(){
    int n;
    while(cin>>n){
        for(int i=0;i<=n;i++){
            cin>>s[i].x;
            s[i].z=n-i;
        }
        int f=1;
        for(int i=0;i<=n;i++){
            f=s[i].show(f);
        }
    }
}
原文地址:https://www.cnblogs.com/Yinku/p/10535869.html