专栏地址
源码:
# 题解:P1067 [NOIP2009 普及组] 多项式输出
## 题意
根据输入的次数和系数,输出一个多项式。
### 输入部分
输入部分包含$2$行。\
第一行: 输入$n$,**代表多项式次数**。\
第二行:包含$n+1$个整数,**代表多项式每一项的系数**。
### 输出部分
输出部分包含$1$行。\
根据输入输出多项式。其中,未知数为$x$,表示次数时用“^”符号。
## 前置知识
循环结构$\texttt{for}$的使用。
## 解题思路
可以考虑边输入边输出。每个单项式的次数从最高次数$n$开始,依次递减。\
为了满足上述思路与输入要求,用`for(int i=n;i>=0;i--)`来同时支持$n+1$行的输入和输出时递减的次数。
## 完整代码
```cpp
#include<bits/stdc++.h>//万能头
#define int long long//好习惯
using namespace std;
signed main()//主函数完美的开始
{
int n;
cin>>n;//输入次数
for(int i=n;i>=0;i--)
{
int a;
cin>>a;//输入系数
if(a==0)
{
continue;//当次数为0,此项不存在,无需输出
}
else
{
if(i!=n&&a>0)//当循环刚开始且系数为正,第一项前无需输出正号
cout<<"+";//否则就输出正号
if(abs(a)>1||i==0)//当系数为1,无需输出;当次数为0时,系数为常数
cout<<a;
if(a==-1&&i)//当系数为负数且i不等于0,需输出负号
cout<<"-";
if(i>1)//当次数不为1时,需输出x的i次方
cout<<"x^"<<i;
if(i==1)//当次数为1时,次数需省略
cout<<"x";
}
}
return 0;//完美结束
}