我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。此处文章目前已更新至与Github Pages同步。欢迎star我的repo。
题目
This time, you are supposed to find
A
×
B
A\times B
A×B where
A
A
A and
B
B
B are two
polynomials.
Input Specification:
Each input file contains one test case. Each case occupies 2 lines, and each
line contains the information of a polynomial:
K K K N 1 N_1 N1 a N 1 a_{N_1} aN1 N 2 N_2 N2 a N 2 a_{N_2} aN2 … N K N_K NK a N K a_{N_K} aNK
where
K
K
K is the number of nonzero terms in the polynomial,
N
i
N_i
Ni and
a
N
i
a_{N_i}
aNi (
i
=
1
,
2
,
⋯
 
,
K
i=1, 2, \cdots , K
i=1,2,⋯,K ) are the exponents and coefficients,
respectively. It is given that
1
≤
K
≤
10
1\le K \le 10
1≤K≤10 ,
0
≤
N
K
<
⋯
<
N
2
<
N
1
≤
1000
0 \le N_K < \cdots < N_2 < N_1 \le 1000
0≤NK<⋯<N2<N1≤1000 .
Output Specification:
For each test case you should output the product of
A
A
A and
B
B
B in one line,
with the same format as the input. Notice that there must be NO extra
space at the end of each line. Please be accurate up to 1 decimal place.
Sample Input:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output:
3 3 3.6 2 6.0 1 1.6
思路
为了思路简单,就直接开大数组遍历了,没有什么难点
代码
最新代码@github,欢迎交流
#include <stdio.h>
int main()
{
int N, exp, count = 0;
float coef, A[1001] = {0}, B[1001] = {0}, MUL[2001] = {0};
scanf("%d", &N);
while(N--){ scanf("%d %f", &exp, &coef); A[exp] = coef; }
scanf("%d", &N);
while(N--){ scanf("%d %f", &exp, &coef); B[exp] = coef; }
for(int i = 0; i < 1001; i++)
for(int j = 0; j < 1001; j++)
MUL[i + j] += A[i] * B[j];
for(int i = 0; i < 2001; i++)
if(MUL[i]) count++;
printf("%d", count);
for(int i = 2000; i >= 0; i--) if(MUL[i])
printf(" %d %.1f", i, MUL[i]);
return 0;
}
1216

被折叠的 条评论
为什么被折叠?



