思路:指数相加,系数相乘
我只是想记录一下我愚蠢的错误历程
找了半个小时不知道错在哪!最后发现循环条件写的有问题,不应该是 小于n和m(多项式项数),因为可能只有两项,但是指数巨大,[i + j] 是 存指数的,不是存个数的
for (int i = 0; i <= N; i ++ )
for (int j = 0; j <= N; j ++ )
c[i + j] += a[i] * b[j];
// 指数相加,系数相乘
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 1010;
double a[N], b[N], c[2 * N];
int main()
{
int n;
cin >> n;
while(n -- )
{
int k;
double v;
cin >> k >> v;
a[k] = v;
}
int m;
cin >> m;
while(m -- )
{
int k;
double v;
cin >> k >> v;
b[k] = v;
}
for (int i = 0; i <= N; i ++ )
for (int j = 0; j <= N; j ++ )
c[i + j] += a[i] * b[j];
int cnt = 0;
for (int i = 2 * N - 1; i >= 0; i -- )
if (c[i]) cnt ++ ;
cout << cnt;
for (int i = 2 * N - 1; i >= 0; i -- )
if (c[i]) printf(" %d %.1lf", i, c[i]) ;
return 0;
}