题目描述
blablabla
样例
blablabla
算法1
(暴力枚举、模拟) $O(n^2)$
很简单,主要是判断题目里的输出格式
如下:
多项式中自变量为x,从左到右按照次数递减顺序给出多项式。
多项式中只包含系数不为0的项。##注意
如果多项式n次项系数为正,则多项式开头不出现“+”号,如果多项式n次项系数为负,则多项式以“-”号开头。##注意
对于不是最高次的项,以“+”号或者“-”号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0次的项,其系数的绝对值为1,则无需输出1)。如果x 的指数大于1,则接下来紧跟的指数部分的形式为“x^b”,其中b为x的指数;如果x的指数为1,则接下来紧跟的指数部分形式为“x”; 如果x的指数为0,则仅需输出系数即可。
多项式中,多项式的开头、结尾不含多余的空格。
还有一点注意
如
0 0 3 3
这时不能输出+3x+3
而输出3x+3,用falg标志记录开头是否为0即可
时间复杂度
参考文献
C++ 代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cfloat>
#include<climits>
#include<algorithm>
#include<cctype>
#include<cstdlib>
#include<fstream>
#include<sstream>
//#include<ctime>
//#include<windows.h>
using namespace std;
int main(){
int n,a[207],flag=0;
cin>>n;
//string b,c,d,e="";
for(int i=n;i>=0;i--){
cin>>a[i];
}
for(int i=n;i>=0;i--){
if(a[i]!=0&&i==n){//判断是否为首
flag=1;
if(a[i]==1||a[i]==-1){//判断1,-1
if(a[i]==1){
cout<<"x"<<"^"<<i;
}else{
cout<<"-x"<<"^"<<i;
}
}else{
cout<<a[i];
cout<<"x";
cout<<"^"<<i;
}
}else if(a[i]!=0&&i==0){
if(flag){
if(a[i]<0)
cout<<a[i];
else{
cout<<"+"<<a[i]<<endl;
}
}else{
if(a[i]<0)
cout<<a[i];
else{
cout<<a[i]<<endl;
}
flag=1;
}
}else if(i==1&&a[i]!=0){
if(flag){
if(a[i]==1||a[i]==-1){
if(a[i]>0){
cout<<"+"<<"x";
}else{
cout<<"-x";
}
}else{
if(a[i]>0){
cout<<"+"<<a[i]<<"x";
}else{
cout<<a[i]<<"x";
}
}
}else{
if(a[i]==1||a[i]==-1){
if(a[i]>0){
cout<<"x";
}else{
cout<<"-x";
}
}else{
if(a[i]>0){
cout<<a[i]<<"x";
}else{
cout<<a[i]<<"x";
}
}
flag=1;
}
}else if(a[i]!=0){
if(flag){
if(a[i]==1||a[i]==-1){
if(a[i]>0){
cout<<"+"<<"x^"<<i;
}else{
cout<<"-x^"<<i;
}
}else{
if(a[i]>0){
cout<<"+"<<a[i]<<"x^"<<i;
}else{
cout<<a[i]<<"x^"<<i;
}
}
}else{
if(a[i]==1||a[i]==-1){
if(a[i]>0){
cout<<"x^"<<i;
}else{
cout<<"-x^"<<i;
}
}else{
cout<<a[i]<<"x^"<<i;
}
flag=1;
}
}
}
// cout<<e<<endl;
return 0;
}
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla