#include<iostream>
#include<vector>
#include<functional>
using namespace std;
#define MX 10010
#define MIS 1e-7
int main(){
vector<double> c1(MX), c2(MX), c3(MX);
int n, m,s1,s2;
cin >> n;
for (int i = 0; i < n;++i){
int e;
cin >> e;
if(i==0)
s1 = e;
cin >> c1[e];
}
cin >> m;
for (int i = 0; i < m;++i){
int e;
cin >> e;
if(i==0)
s2 = e;
cin >> c2[e];
}
auto getNum = [&](vector<double> c, int e)
{
int cnt = 0;
for (int i = e; i >= 0;--i)
if(abs(c[i])+0.05>=0.1)
cnt++;
return cnt;
};
auto printPoly = [&](vector<double> c, int e){
int num = getNum(c, e);
cout << num;
if(num==0)
printf(" 0 0.0");
for (int i = e; i >= 0;--i)
if(abs(c[i])+0.05>=0.1)
printf(" %d %.1f", i,c[i]);
};
int e1 = s1, e2 = s2;
while(e1>=e2){
double c = c1[e1]/c2[e2];
c3[e1 - e2] = c;
for (int i = e1, j = e2; j >= 0;--i,--j)
c1[i] -= c2[j] * c;
while(e1>=0 && abs(c1[e1])<MIS)
e1--;
}
printPoly(c3, s1 - s2);
puts("");
printPoly(c1, e1);
}
L2-018 多项式A除以B (25 分)
最新推荐文章于 2024-05-28 21:13:10 发布