题目为洛谷P1067 [NOIP 2009 普及组] 多项式输出,应该算是一道比较简单的题,难度是普及-。题目如题就是输出一个多项式,但是极其容易因为没有考虑到特殊情况出错。这里贴一下自己写的题解。
#include<bits/stdc++.h>
using namespace std;
void shuchu(int a){
if(a>1)
cout<<"x^"<<a;
if(a==1)
cout<<"x";
}
int main() {
int n,sign=0;
int a[101];
cin>>n;
for(int i=0;i<=n;i++){
cin>>a[i];
if(a[i]<0)
sign = -1;
if(a[i]==0)
continue;
if(a[i]>0&&sign==-1)
sign = 1;
if(a[i]>0&&sign==1){
cout<<"+";
}
if(sign==0)
sign=1;
if(abs(a[i])==1){
if(n-i==0){
cout<<a[i];
shuchu(n-i);
}
else{
if(a[i]>0)
shuchu(n-i);
if(a[i]<0){
cout<<"-";
shuchu(n-i);
}
}
}
else{
cout<<a[i];
shuchu(n-i);
}
}
return 0;
}
我是通过分别判断系数、次数、符号来做的,可能稍显复杂。提醒各位多注意一下系数为1的情况,如此便能AP了。