列表

详情


NC15188. 多项式乘法

描述

Etéreo 吃完了元宵,又开始思考数学问题了。这次他拿了两个多项式  和  。他知道这两个多项式的乘积也是一个多项式,但他不清楚每一项的系数。所以他又来请问你咯。

输入描述

输入共三行。 
第一行两个整数  ,表示多项式 的最高次项次数 的最高次项次数 。 
第二行 个整数,表示多项式 的每一项的系数。按次数从小到大的顺序排列。 
第三行 个整数,表示多项式 的每一项的系数。按次数从小到大的顺序排列。

输出描述

输出共一行, 个整数,表示乘积多项式的每一项的系数。按次数从小到大排列。

示例1

输入:

2 3
2 1 3
1 2 0 2

输出:

2 5 5 10 2 6

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 8ms, 内存消耗: 544K, 提交时间: 2021-04-05 20:58:27

#include<bits/stdc++.h>
using namespace std;
int a[505];
int c[1005];
int main(){
	int m,n,i,j,p;
	cin>>m>>n;
	for(i=0;i<=m;i++){
		cin>>a[i];
	}
	for(i=0;i<=n;i++){
		cin>>p;
		for(j=0;j<=m;j++){
			c[i+j]+=a[j]*p;
		}
	}
	for(i=0;i<n+m;i++){
		cout<<c[i]<<" ";
	}	
	cout<<c[i]<<endl;
}

Python(2.7.3) 解法, 执行用时: 96ms, 内存消耗: 3172K, 提交时间: 2018-03-17 19:40:07

n,m=map(int,raw_input().split())
a=map(int,raw_input().split())
b=map(int,raw_input().split())
c=[0]*(n+m+1)
for i in range(n+1) :
    for j in range(m+1) :
        c[i+j]+=a[i]*b[j]
for i in range(n+m) :
    print c[i],
print c[n+m]

pypy3 解法, 执行用时: 125ms, 内存消耗: 26304K, 提交时间: 2021-12-03 20:05:55

n,m=map(int,input().split(' '))
a=list(map(int, input().split(' ')))
b=list(map(int, input().split(' ')))
c=[0]*(n+m+1)
for i in range(n+1):
    for j in range(m+1):
        #print(i,j,a[i]*b[j])
        c[i+j]+=a[i]*b[j]
print(*c)

Python3 解法, 执行用时: 180ms, 内存消耗: 4720K, 提交时间: 2023-07-29 11:15:56

m,n=map(int,input().split())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
s=[0]*(m+n+1)
for i in range(m+1):
    for j in range(n+1):
        s[i+j]+=a[i]*b[j]
print(*s)

上一题