3-04. 一元多项式的乘法与加法运算(20)

来源:互联网 发布:控制器解析json数据 编辑:程序博客网 时间:2024/06/15 22:18

由于题中数据量不是很大 想到 类似“散列 查找”的算法 将指数 映射到一维数组的下标 而数组的值为 系数。

#include<iostream>#include<cstring>#include<vector>using namespace std;#define Size 1000000// 1000*1000int Poly_1[Size+1], Poly_2[Size+1], Added[Size+1], Mul[Size+1];// added mul 分别存储 加结果 乘结果 后打印struct Node{        int C;//系数        int E;//指数};int main(){        vector<Node>V;        Node num;        memset( Poly_1, 0, sizeof( Poly_1) );        memset( Poly_2, 0, sizeof( Poly_2 ));        memset( Added, 0, sizeof( Added ) );        memset( Mul, 0, sizeof(Mul) );        int N;        cin>>N;        for( int i=0; i<N; i++ ){                cin>>num.C>>num.E;                Added[num.E]=Poly_1[num.E]=num.C;                V.push_back(num);        }        cin>>N;        for( int i=0; i<N; i++ ){                cin>>num.C>>num.E;                Poly_2[num.E]=num.C;                Added[num.E]+=num.C;                for( int i=0; i<V.size(); i++ )// 将每次的输入依次相乘后保存到 Mul 中                            Mul[num.E + V[i].E ]+=num.C*V[i].C;        }        bool flag=true;// 检测 相加 相乘 后的 值是否 为 0    默认 为0        bool first = true;        for( int i=Size; i>=0; i-- )        {                if( Mul[i]!=0 ){                        flag = false;                    if( first ){                            first = false;                        cout<<Mul[i]<<" "<<i;                    }                    else                        cout<<" "<<Mul[i]<<" "<<i;                }        }        if( flag )            cout<<0<<" "<<0;        cout<<endl;        flag = true;        first = true;        for( int i=Size; i>=0; i-- )        {                if( Added[i]!=0 ){                        flag = false;                    if( first ){                            first = false;                        cout<<Added[i]<<" "<<i;                    }                    else                        cout<<" "<<Added[i]<<" "<<i;                }        }        if( flag )            cout<<0<<" "<<0;        cout<<endl;        return  0;}


0 0
原创粉丝点击