第一次写博客,随便拿了一道题过来用一用。
好吧,我错了,这题很难。毕竟你们都搜到这里了,当然会认为这题很难(手动滑稽)。
在座的多半是XD的,应该都有题目,不过以防万一,我还是把题目贴一下。
标题:
一元稀疏多项式计算器
类别:
综合
时间限制:
2S
内存限制
1000Kb
问题描述
一元 n 次多项式𝑝0𝑋𝑒0 + 𝑝1𝑋𝑒1 + ⋯ + 𝑝𝑖𝑋𝑒𝑖 + ⋯ + 𝑝𝑛𝑋𝑒𝑛 项数较少时成为一元稀疏多项式,
例如:3 + 6𝑋3 − 2𝑋8 + 12𝑋20是一个一元稀疏多项式。设计一个一元稀疏多项式计算器程 序完成两个一元稀疏多项式的加减法,输出结果多项式的各项系数和指数。
输入说明
输入数据第 1 行为 3 个正整数 n,m,t。其中 n 表示第一个多项式的项数,m 表示第二个
多项式的项数,t 表示运算类型,0 为加法,1 为减法。数据的第 2 行包含 2n 个整数,每两
个整数分别表示第一个多项式每一项的系数和指数;第 3 行包含 2m 个整数,每两个整数分
别表示第二个多项式每一项的系数和指数。两个多项式的每项是按照指数递增的形式给出的,
例如对于多项式3 + 6𝑋3 − 2𝑋8 + 12𝑋20,对应的输入为 3 0 6 3 -2 8 12 20
输出说明
运算结果按指数从低到高的顺序在以多项式形式(见输出样例)输出结果,注意系数为负数
时输出减号,系数为 0 时不输出该项,指数为 1 时不输出指数。
(需要各种if条件语句,漏了任何一种情况都会遭殃)
输入样例
6 2 0
1 0 1 1 1 2 1 3 1 4 1 5
-1 3 -1 4
(样例确实有点坑,我这个垃圾一开始并没有想到指数还可以是负数,用数组把自己害惨了,555)
输出样例
1+x+x^2+x^5
判定规则:
忽略首尾空白 忽略空行 忽略大小写 数据之间只保留一个空白
废话少说,先贴代码。
#include <stdio.h>
#include <string.h>
struct ooo //用结构体做这题方便许多
{
int coe;
int exp;
};
int main()
{
int n,m,t;
scanf("%d%d%d",&n,&m,&t);
struct ooo a[n+m],b[m],temp;
int i=0,j=0,k=0,l=0;
for(i=0;i<n;++i) //我喜欢用++i,听说在某些情况下可以加快运行速度,至于是什么情况我也不知道(手动滑稽*2)
{
scanf("%d%d",&a[i].coe,&a[i].exp);