题意:给你A,B两个多项式,问你A/B的值;注意多项式给你的是每个式子的指数与系数;保留到一位小数,如果出现系数为0(保留后也是)的情况,请不要输出它,如果没有非系数为0的情况就输出特殊

题解:多项式类似于“a*x^4+b*x^3+c*x^2+d*x^1+e*x^0”的形式,两个多项式除法就是模拟除法做

   现在被除数最大指数的系数、被 除数最大指数的系数除以、结果就是商的系数,两个指数的差就是商的指数

   然后枚举除数每一位乘以这个值来被 被除数减去,最后找被除数后一个位置继续循环,直到被除数最大项大于除数最大项

   最后有一个点需要注意,因为需要的是保留答案后系数为0也不能输出,所以在保留答案是一定要判断是否为0,不能再最后输出时在判断

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<string>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define eps 1E-1
#define Eps 1E-1
/*注意可能会有输出-0.000*/
#define sgn(x) (x<-Eps? -1 :x<Eps? 0:1)//x为两个浮点数差的比较,注意返回整型
#define cvs(x) (x > 0.0 ? x+eps : x-eps)//浮点数转化
#define zero(x) (((x)>0?(x):-(x))<eps)//判断是否等于0
#define mul(a,b) (a<<b)
#define dir(a,b) (a>>b)
typedef long long ll;
typedef unsigned long long ull;
const int Inf=<<;
const ll INF=1LL<<;
const double Pi=acos(-1.0);
const int Mod=1e9+;
const int Max=;
double divide[Max],divisor[Max];//被除数 除数
double business[Max],remainde[Max];//商 余数
int busindex[Max],remindex[Max];//答案系数
int coundiv,counsor;
void Print(int coun,int* ansindex,double* ans)
{
if(!coun)
printf("0 0 0.0\n");
else
{
printf("%d",coun);
for(int i=;i<coun;++i)
{
if(!zero(ans[i]))
printf(" %d %.1f",ansindex[i],ans[i]);
}
printf("\n");
}
return;
}
void Divison(int n,int dif,double num)
{
for(int i=n;i>=dif;--i)
{
divide[i]-=divisor[i-dif]*num;
}
return;
}
void Solve(int maxdiv,int maxsor)
{
coundiv=counsor=;
for(int i=maxdiv;i>=maxsor;--i)
{
busindex[coundiv]=i-maxsor;
int dif=busindex[coundiv];
business[coundiv]=divide[i]/divisor[maxsor];
Divison(i,dif,business[coundiv]);
business[coundiv]=business[coundiv];
if(sgn(business[coundiv])!=)//注意
coundiv++;
}
for(int i=maxsor-;i>=;--i)
{
remindex[counsor]=i;
remainde[counsor]=divide[i];
if(sgn(remainde[counsor])!=)
counsor++;
}
return;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(divide,,sizeof(divide));
memset(divisor,,sizeof(divisor));
int maxdiv=,maxsor=;
int index;
for(int i=;i<n;++i)
{
scanf("%d",&index);
maxdiv=max(maxdiv,index);
scanf("%lf",&divide[index]);
}
scanf("%d",&n);
for(int i=;i<n;++i)
{
scanf("%d",&index);
maxsor=max(maxsor,index);
scanf("%lf",&divisor[index]);
}
Solve(maxdiv,maxsor);
Print(coundiv,busindex,business);
Print(counsor,remindex,remainde);
}
return ;
}

最新文章

  1. JSPatch使用小记
  2. CSS初始化样式
  3. lua 元表
  4. width,clientWidth,offsetWidth
  5. linux里的进程简介
  6. MyBatis(3.2.3) - Passing multiple input parameters
  7. Linux系统下如何查看CPU个数
  8. [Node.js] Introduction to apiCheck.js
  9. exchange邮箱的”单点登陆“
  10. HTML网页制作:[12]使用框架结构之frameset
  11. Vc6.0打开该文件坠毁
  12. [Sdoi2017]树点涂色 [lct 线段树]
  13. React生命周期详解
  14. 对迭代器操作的python 模块
  15. SQL Server进阶(十二)函数
  16. c3p0 空指针异常 com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
  17. day5_判断价格输入是否是正整数或正小数
  18. html5-section元素
  19. hdu 5195 线段树
  20. 24-filter-拦截器

热门文章

  1. [Go语言]从Docker源码学习Go——init()方法和identifier首字母大小写区分
  2. 活动窗口(Active),焦点窗口(Focus)和前景窗口(Foreground)之间的关系
  3. 170208、用Navicat自动备份mysql数据库
  4. Thrift初试
  5. 巨蟒python全栈开发flask9 项目开始1
  6. 巨蟒python全栈开发flask7 语音识别升级版&amp;&amp;mongoDB
  7. 巨蟒python全栈开发flask3
  8. 模块化之SeaJS(一)
  9. django模板之导入与继承
  10. 【Oracle】OGG数据初始化之RMAN