//多项式A/B
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
math.h
int main() {
int a, b;
int ma, mb;
int zhishu, xishu;
double c;
double data1, data2;
scanf(“%d”, &a);
data1 = (double ) calloc(1000000, sizeof(double));
for (int i = 0; i < a; i++) {
scanf(“%d”, &zhishu);
if (i == 0)
ma = zhishu;
scanf(“%d”, &xishu);
data1[zhishu] = xishu;
}
scanf("%d", &b);
data2 = (double *) calloc(1000000, sizeof(double));//分配内存并初始化
for (int i = 0; i < b; i++) {
scanf("%d", &zhishu);
if (i == 0)
mb = zhishu;
scanf("%d", &xishu);
data2[zhishu] = xishu;
}
c = (double *) calloc(1000000, sizeof(double));
for (int i = ma; i >= mb; i--) {
c[i - mb] = data1[i] / data2[mb];
for (int j = mb; j >= 0; j--) {
data1[i + j - mb] -= data2[j] * c[i - mb];//data1的参数是根据等号右边的式子确定的
}
}
int num1 = 0, num2 = 0;
for (int i = ma - mb; i >= 0; i--) {
if (fabs(c[i]) >= 0.1)
num1++;
}
for (int i = mb - 1; i >= 0; i--) {
if (fabs(data1[i]) >= 0.1)
num2++;
}
if (num1 == 0) {
printf("0 0 0.0\n");
} else {
printf("%d", num1);
for (int i = ma - mb; i >= 0; i--) {
if (fabs(c[i]) >= 0.1)
printf(" %d %.1lf", i, c[i]);
}
printf("\n");
}
if (num2 == 0) {
printf("0 0 0.0\n");
} else {
printf("%d", num2);
for (int i = mb - 1; i >= 0; i--) {
if (fabs(data1[i]) > 0.1)
printf(" %d %.1lf", i, data1[i]);
}
}
free(data1);
free(data2);
free(c);
return 0;
}