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); } } }