原题链接
思路:这道题其实简单,就是非常麻烦;我想的是,因为1和0的特殊,所以输出的多项式分成三个部分
a1 | … | an |
---|
对于n,当n==0时直接输出系数coefficient。当n>0时,输入的第一项正数不用加“+”,且“1”“-1”不输出1;中间的那几项正数要加“+”,“1”“-1”不输出1,且项的次数为1时不输出;最后一项正数要加“+”。所有项系数coefficient为0都不输出。
using namespace std;
int main() {
int n;
int coefficient;
sfd(n);
sfd(coefficient);
if( n==0 ) {
pfd(coefficient);
}else {
if( coefficient>=1 ) {
if( coefficient>1 ) {
pfd(coefficient);
}
pf("x^");
pfd(n);
}else if( coefficient<-1 ) {
pfd(coefficient);
pf("x^");
pfd(n);
}else if( coefficient==-1 ) {
pf("-x^");
pfd(n);
}
for( int i=n-1; i>0; i-- ) {
sfd(coefficient);
if( coefficient>=1 ) {
pf("+");
if( coefficient>1 ) {
pfd(coefficient);
}
}else if( coefficient<-1 ) {
pfd(coefficient);
}else if( coefficient==-1 ) {
pf("-");
}
if( coefficient ) {
pf("x");
if( i>1 ) {
pf("^");
pfd(i);
}
}
}
sfd(coefficient);
if( coefficient>=1 ) {
pf("+");
pfd(coefficient);
}else if( coefficient<=-1 ) {
pfd(coefficient);
}
}
return 0;
}