Problem A: 高阶多项式(IV)

Problem A: 高阶多项式(IV)

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 192   Solved: 85
[ Submit][ Status][ Web Board]

Description

定义一个n阶多项式为:a0xn+a1xn-1+a2xn-2+...+an-2x2+an-1x+an。其中ai是系数,均为int类型内的整数。x是未知量,是一个double类型的实数。现在请定义Equation类来表示这个多项式。

1.重载的>>运算符,按照格式要求读取方程。

2. 重载的<<运算符:用于输出方程。输出时xn输出x^n,且要按照我们平时惯用的方式来输出。包括如下规则:

(1)如果系数为0,则相应的项不输出。如果所有的系数为0,则只输出一个0。

(2)如果系数为1或-1,则不输出系数,仅输出对应的x的幂。

(3)一次项如果输出,不输出指数,即不输出x^1,而是x。

(4)0阶多项式即只有一个常数的多项式。

(5)按照从高阶到低阶的顺序输出。

(6)输出方程前,先按照样例格式输出各个方程的阶数。其中阶数定义为第一个非0系数对应的阶,如果只有常数项,则为0阶。

Input

输入有多行。

第一行N表示后面后N组测试用例。

每组测试用例包括2行。第1行n表示输入的系数的个数(不包括常数项),第2行输入n+1个int范围内的整数 ,是该多项式的系数,按照从高阶到低阶的顺序输入。

注意:每个测试用例的系数,可能前面若干个都是0,此时的阶数不等于n。

Output

见样例。

Sample Input

63100 0 0 -13100 -1 -1 -13-1 -1 -1 -130 0 0 -130 -1 0 03-100 0 0 -1

Sample Output

3 order polynomial:100x^3-13 order polynomial:100x^3-x^2-x-13 order polynomial:-x^3-x^2-x-10 order polynomial:-12 order polynomial:-x^23 order polynomial:-100x^3-1

HINT

Append Code

append.cc, 

#include
using namespace std;
double jiecheng(double x,int b)//x,次方
{
    if(b==1)return x;
    if(b==0)return 1;
    if(b%2 == 0)
        return jiecheng(x*x,b/2);
    else return jiecheng(x*x,b/2)*x;
}
class Equation
{
private:
    int *s;
    int num;
public:
    Equation()
    {
        s= NULL;
        num=0;
    }
    Equation(int *a,int n)
    {
        s =new int[n+1];
        for(int i=0; i<=n; i++)
        {
            s[i]=a[i];
        }
    }
    void setArgs(int a[], int n)
    {
        if(s == NULL ||num0)cout<<"+";
                    //else cout<<"-";
                }
                if(s[i]!=1)
                {
                    if(s[i] == -1)cout<<'-';
                    else cout<=0)
        {
            if(flag)
                if(s[num-1]>0)cout<<"+";
            if(s[num-1]!=1)
            {
                if(s[num-1]!=-1)
                    cout<=0)cout<<"+";
            cout<>(istream& cinn,Equation& abc)
    {
        cinn>>abc.num;
        abc.s = new int[abc.num+1];
        for(int i=0;i<=abc.num;i++)
            cinn>>abc.s[i];
        return cinn;
    }
    friend ostream& operator<<(ostream& cou,Equation& abc)
    {
        int aaa = abc.num;
        for(int i=0;i<=abc.num;i++)
        {
            if(abc.s[i] == 0)--aaa;
            else break;
        }
        cou<>n;
    for (i = 0; i < n; i++)
    {
        Equation eq;
        cin>>eq;
        cout<


你可能感兴趣的:(山科大oj)