题目描述
一道纯模拟题,从最高次方开始判断就行了。
我特地判断了如果最高项为0的情况,虽然题目中给出了最高项不为0的条件(所以不需要特判),但我这么严谨细心的人怎么会因为这个就不写呢!(你以为我会告诉我没有看到吗?)
样例
输入:
5
100 -1 1 -3 0 10
输出:
100x^5-x^4+x^3-3x^2+10
时间复杂度O(n)
C++ 代码
#include<iostream>
#include<cmath>
using namespace std;
int n;
int main()
{
cin>>n;int a;
int pos=0;//标记初始化
for(int i=n;i>=0;i--)
{
cin>>a;
if(a)//特判i这一项是否存在
{
if(a==-1&&i!=0)cout<<"-";//a为-1且不为常数项的特判
if(pos&&a>0)cout<<"+";//如果不是首项且为正数输出+,pos表示用来防止出现+2x+1这种情况
if(abs(a)!=1||i==0)cout<<a;//关于a为正负一以及常数项的特判
if(i==1) cout<<"x",pos=1;//输出后缀并打上标记
if(i>1) cout<<"x^"<<i,pos=1;
}
}
return 0;
}