多项式加法

【问题描述】

编写一个程序实现两个一元多项式相加的运算。
【输入形式】

从当前目录下的poly.in文件读入两行以空格分隔的整数,每一行代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式(n<=50)的表示方法如下:
an n an-1 n-1 … a1 1 a0 0
即相邻两个整数分别表示表达式中一项的系数和指数。在输入文件中只出现系数不为0的项。
【输出形式】

将运算结果输出到当前目录下的poly.out文件中。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以空格分隔。在行的末尾输出一个回车符。
【输入文件】

54 8 2 6 7 3 25 1 78 0
43 7 4 2 8 1
【输出文件】

54 8 43 7 2 6 7 3 4 2 33 1 78 0
【样例说明】

输入文件的两行分别代表了表达式54x8+2x6+7x3+25x+78+43x7+4x2+8x其和为54x8+43x7+2x6+7x3+4x2+33x+78

f = open('poly.in')
line = f.readline()
list_line = [line.split()]
line = f.readline()
list_line.append(line.split())
dict_record = {}
for i in range(len(list_line[0]) - 1):  # 储存第一行
    if i % 2 == 0:  # i+1=key=幂次, i=value=系数
        dict_record.update({int(list_line[0][i + 1]): int(list_line[0][i])})
for i in range(1, len(list_line[1])):  # 储存第二行
    if i % 2 == 1:  # 获取,i=幂次,i-1=系数
        if int(list_line[1][i]) in dict_record.keys():  # 幂次存在
            for key, value in dict_record.items():  # 幂次已经存在,系数改变
                if key == int(list_line[1][i]):  # key值相同
                    dict_record[key] = value + int(list_line[1][i - 1])  # value + 另一个值
        elif int(list_line[1][i]) not in dict_record.keys():  # 幂次不存在
            dict_record.update({int(list_line[1][i]): int(list_line[1][i - 1])})  # 更新字典
# 根据key 排序
dict_record = dict(sorted(dict_record.items(), key=lambda x: x[0], reverse=True))
g = open('poly.out', 'a')
g.seek(0)  # 定位
g.truncate()  # 从定位起置空
t = len(dict_record)  # 获取字典长度,为添加空格做准备
count = 1
for key, value in dict_record.items():
    g.write(str(value))  # 转为字符写入
    g.write(' ')  # 添加空格
    g.write(str(key))
    if count < t:  # 判断输入空格
        count += 1
        g.write(' ')
    else:
        break
g.write('\n')
f.close()
g.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值