1013

来源:互联网 发布:健身 知乎 编辑:程序博客网 时间:2024/04/29 11:05
#include <iostream>#include <string>#include <vector>#include <sstream>using namespace std;const int LEN1 = 5+1;const int LEN2 = 2*LEN1-1;void input(unsigned int a[LEN1]){memset(a, 0, sizeof(unsigned int)*LEN1);int count = -1;cin>>count;unsigned int tmp =0;for(int i=0; i<=count; i++){cin>>tmp;a[count-i] = tmp;}}void change(string &str, const int°ree, const unsigned int& coefficient){stringstream ss;if(coefficient == 0){str.clear();return;}if(coefficient > 1)ss<<coefficient;if(degree > 0){ss<<"x";if(degree > 1)ss<<"^"<<degree;}ss>>str;}void output(unsigned int c[LEN2], string& str){int i = LEN2-1;while(i>=0 && c[i]==0)--i;if(i<0){str = "0";}else{str.clear();string tmp;change(tmp, i, c[i]);--i;str += tmp;for(; i>=0; i--){if(c[i] != 0)str += " + ";change(tmp, i, c[i]);str += tmp;}}}void multi(unsigned int a[LEN1], unsigned int b[LEN1], unsigned int c[LEN2]){// c = a*b;memset(c, 0, sizeof(unsigned int)*LEN2);int cc = 0;for(int i=0;i<LEN1;i++){cc = i;for(int j=0;j<LEN1;j++){c[cc++] += a[j]*b[i];}}}int main(){vector<string> svec;string str;int count = -1;cin>>count;unsigned int a[LEN1], b[LEN1], c[LEN2];if(count >= 1){input(a);input(b);multi(a, b, c);output(c, str);svec.push_back(str);}for(int i=1;i<count;i++)  {  getline(cin,str);input(a);input(b);multi(a, b, c);output(c, str);svec.push_back(str);}  vector<string>::const_iterator iter = svec.begin();while(iter != svec.end())cout<<*iter++<<endl;return 0;}