【6.18校内test】T1多项式输出
日常题前废话:
首先so amazing 的一件事,因为在洛谷上立下了的flag,然后这次考试前两道题都是刚刚做过不久的题emmm(相当于白送200吗qwq,但是这阻挡不了我第三题不会的脚步qwq)
好了来看题:
因为luogu上有题就不放原题了,直接放链接吧:多项式输出【题目链接】
做到这道题是在洛谷普及练习场的第一个板块:
因此很显然,这就是一道模拟题;
这道模拟虽然看起来好做,但是有很多很多的小细节需要处理,所以想得到满分也并非那么容易,幸运就幸运在我之前刚刚做了这道题,所以好多小细节就都了解到了qwq
然后感觉考试时的代码不如交luogu的简单呢,考试处理的乱七八糟的又。
感觉大模拟没有什么好讲的qwq,就直接贴代码吧:
#include<bits/stdc++.h> using namespace std; int n,c; int main(){ scanf("%d",&n); if(n==0){ cin>>c; cout<<c; return 0; } for(int i=n;i>=0;i--){ cin>>c; if(c==0) continue; if((i!=n)&&(c>0)) cout<<"+"; if(c==1||c==-1){ if(c==-1&&i!=0) cout<<"-"; if(i==0) cout<<c; } else cout<<c; if(i==1) { cout<<"x"; continue; } if(i==0) break; cout<<"x^"; cout<<i; } }
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<string> #include<cmath> using namespace std; int n,g,z,first; int a; bool c; int main(){ freopen("poly.in","r",stdin); freopen("poly.out","w",stdout); scanf("%d",&n); if(n==1){ cin>>g>>z; if(g==0&&z==0) cout<<"0"; if(g!=0){ if(g==1||g==-1){ if(g==1) cout<<"x"; else cout<<"-x"; } else cout<<g<<"x"; } if(z!=0) { if(z>0) cout<<"+"<<z; else cout<<z; } return 0; } for(int i=n;i>=0;i--){ cin>>a; if(a){ if(a>0){ if(a==1&&i!=n&&i!=1&&i!=0){ if(c==1) cout<<"+"<<"x^"<<i; else cout<<"x^"<<i; } if(a!=1&&i!=n&&i!=1&&i!=0) { if(c==1) cout<<"+"<<a<<"x^"<<i; else cout<<a<<"x^"<<i; } if(i==n) { if(a==1)cout<<"x^"<<n; else cout<<a<<"x^"<<n; } if(i==1) { if(c==1){ if(a==1) cout<<"+"<<"x"; else cout<<"+"<<a<<"x"; } else{ if(a==1) cout<<"x"; else cout<<a<<"x"; } } if(i==0){ if(c==1) cout<<"+"<<a; else cout<<a; } } if(a<0){ if(a==-1&&i!=n&&i!=1&&i!=0) cout<<"-x^"<<i; if(a!=-1&&i!=n&&i!=1&&i!=0) cout<<a<<"x^"<<i; if(i==n){ if(a==-1)cout<<"-x^"<<n; else cout<<a<<"x^"<<n; } if(i==1) { if(a==-1) cout<<"-x"; else cout<<a<<"x"; } if(i==0) cout<<a; } } if(a) c=1; } if(c==0) cout<<0; return 0; }
end-