计算机挑战赛初赛编程题——求两个关于 x 的一元多项式的乘积。

编写程序,求两个关于 x 的一元多项式的乘积。

测试说明
输入描述:
输入分三行,
第一行给出第一个多项式的系数和指数;
第二行给出第二个多项式的系数和指数;
第三行给出x的值。
数据规模如下:

1<=多项式的项数<=20
1<=多项式的系数<=20
1<=多项式的各项指数<=20
1<=x<=10
输出描述:
输出为一行,为多项式相乘后带入得到的结果。
输出结尾不能有多余空格。

测试输入1:
2 3 4 5
1 3 3 6
2

预期输出1:
28800

测试输入2:
2 5 0 8
1 0 1 5 2 3
3

预期输出2:
144828

样例解析:
对于第一个输入样例,
第一个多项式为: 2∗x∗∗3+4∗x∗∗5
第二个多项式为: x∗∗3+3∗x∗∗6
两个多项式相乘的果为:2∗x∗∗6+6∗x∗∗9+4∗x∗∗8+12∗x∗∗11
带入x=2后,结果为 28800

代码如下:

s = list(map(int,input().split()))
t = list(map(int,input().split()))
x = int(input())
L= []
M =[]   #定义两个空列表,分别用来保存多项式的系数
for i in range(1,len(s)+1): #关键算法
    if(i % 2 != 0):
        m = 0
        m += s[i-1]
    else:
        m = m *(x ** s[i-1])
        L.append(m)
n = sum(L)  #对第一个多项式求和
for i in range(1,len(t)+1):
    if(i % 2 != 0):
        m = 0
        m += t[i-1]
    else:
        m = m *(x ** t[i-1])
        M.append(m)
m = sum(M)    #对第二个多项式求和
sum = n*m     #两个多项式的乘积
print(sum)

解释关键算法原理(画图演示):

这道题就讲解到这里了,如果有不明白的地方或者有更好的解决方法,可以在评论区留言哦^^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值