https://www.patest.cn/contests/gplt/L2-018

题意:模拟多项式除法。

题解:短除法,初中奥数老师,高中数学老师,高数老师都讲过2333。

   模拟之前,关于保存 多项式的方法。考虑到系数可能很分散(1~1e9),直接用map存(map基本就是为多项式加减法定制的)

    模拟的时候,就是数学课上短除法的算法,注意一下循环终止条件及其控制:当多项式A的最高次系数小于B的时,除不下去,此时A已然为余数。

    模拟完,输出 。本来用stack只是因为auto:t不能逆向输出,结果顺便把四舍五入及删零操作顺便解决了(不理解的地方是floor(x+0.5)对负数(-0.5)为什么也能四舍五入,貌似数据太弱)。

    最后,记得判掉零项

坑:题目没看清,没有特判掉零多项式,然后在那里XJBL改。//改了负数的四舍五入,改了一下及时erase掉系数为0的项,显然并卵。无奈搜了一下题解,ac代码赫然多了一行 “0 0 0”   0_0!


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#include <cstring>
#include <string>
#include <map>
#include<stack>
#include<set>
#include<string.h>
#include<list>
#define pb push_back
#define mp make_pair
#define _for(i, a, b) for (int i = (a); i<(b); ++i)
#define _rep(i, a, b) for (int i = (a); i <= (b); ++i)


using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
int len;
map<int, float> a, b, c, d;


int main() {
int n; cin >> n;
_for(i, 0, n) {
int x, y;
cin >> x >> y;
a[x] = y;
}
cin >> n;
_for(i, 0, n) {
int x, y;
cin >> x >> y;
b[x] = y;
}

//模拟短除法:
while (a.rbegin()->first >= b.rbegin()->first) {
int e = a.rbegin()->first - b.rbegin()->first;
float f = a.rbegin()->second / b.rbegin()->second;
c[e] += f;
for (auto t : b) {
a[t.first + e] -= f*t.second;
}
if (a.rbegin()->second == 0) a.erase(a.rbegin()->first);


}
//反向输出,四舍五入判定
stack<pair<int, float> > ta, tb;
for (auto t : c) {
float temp = t.second * 10;
temp = floor(temp + 0.5);
if (temp == 0) continue;
else {
temp /= 10;
ta.push(mp(t.first, temp));
}
}
for (auto t : a) {
float temp = t.second * 10;
temp = floor(temp + 0.5);
if (temp == 0) continue;
else {
temp /= 10;
tb.push(mp(t.first, temp));
}
}
cout << ta.size(); if (ta.size() == 0) { cout << " 0 0.0"; }else while (!ta.empty()) { cout << ' ' << ta.top().first << ' '; printf("%.1lf", ta.top().second); ta.pop(); }
cout << endl;
cout << tb.size(); if (tb.size() == 0) {cout << " 0 0.0" ;}else while (!tb.empty()) { cout << ' ' << tb.top().first << ' '; printf("%.1lf", tb.top().second); tb.pop(); }


system("pause");
}
/*1 2 3*/

 

CCCC L2-018. 多项式A除以B 直接上map,然后stack处理输出的更多相关文章

  1. 多项式A除以B

    这个问题我是在PAT大区赛题里遇见的.题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数 ...

  2. L2-018. 多项式A除以B*

    L2-018. 多项式A除以B 参考博客 #include <iostream> #include <map> #include <cmath> #include ...

  3. (转载) 天梯赛 L2-018. 多项式A除以B

    题目链接 题目描述 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出一个非零多项式,先给出 ...

  4. 7-10 多项式A除以B (25分)(多项式除法)

    7-10 多项式A除以B (25分)   这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出 ...

  5. PAT L2-018. 多项式A除以B

    暴力,模拟. 比赛搞了一个小时搞到了$1$分.赛场上不够冷静......之前没接触过多项式除法,但赛场上想到了除法的规则,莫名其妙写的时候不知道哪里崩了.对于这样的题目,应该先测一测数据的指数是不是很 ...

  6. 团体程序设计天梯赛 L2-018. 多项式A除以B(模拟)

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

  7. L2-018 多项式A除以B(模拟)

    这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B.每行的 ...

  8. 7-10 多项式A除以B (25 分)

    题目链接:https://pintia.cn/problem-sets/1108548596745592832/problems/1108548661014913033 题目大意: 这仍然是一道关于A ...

  9. pta l2-18(多项式A除以B)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805060372905984 题意:给定两个多项式,求出其做除法 ...

随机推荐

  1. MongoDB的数据模型

    文档的数据模型代表了数据的组织结构,一个好的数据模型能更好的支持应用程序.在MongoDB中,文档有两种数据模型,内嵌(embed)和引用(references). 内嵌 MongoDB的文档是无模式 ...

  2. css counter的使用方法

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 指定cmd窗口或tomcat运行窗口的名称

    1. 指定cmd窗口运行时名称 1)直接执行命令:title 窗口名称 2)bat文件中直接加上命令:title 窗口名称 例子: title test_ v1 java -jar -Dfile.en ...

  4. mysql的wait_timeout配置(此处处理方法是有问题的,不建议作为操作参考)

    mysql数据库有一个wait_timeout的配置,默认值为28800(即8小时). 在默认配置不改变的情况下,如果连续8小时内都没有访问数据库的操作,再次访问mysql数据库的时候,mysql数据 ...

  5. Yarn执行流程

    在Yarn中,JobTracker被分为两部分:ResourceManager(RM)和ApplicationMaster(AM). MRv1主要由三部分组成:编程模型(API).数据处理引擎(Map ...

  6. linux环境下执行RF测试脚本

    1. 测试执行 测试管理平台需根据用户选中的测试案例,按照相应格式对执行启动命令进行组装和发送,触动案例的自动化测试执行. 命令格式根据测试模式(以项目为单位.以测试集为单位.以案例为单位)具有不同的 ...

  7. java.util.concurrent.RejectedExecutionException 线程池饱和

    java.util.concurrent.RejectedExecutionException at java.util.concurrent.ThreadPoolExecutor$AbortPoli ...

  8. 浅析JavaBean

    一.概述 JavaBean组件本质上是一个Java类,只是这个类的编码要遵循一些约定.用户可以使用JavaBean将功能.处理.值.数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的 ...

  9. namespace main

    c++程序运行的入口是::main 如果把main放到某个命名空间中,则系统就无法找到入口. 所以就有了为了测试功能的tools和test,其中没有命名空间.

  10. 关于android性能,内存优化

    转:http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...