天梯赛 L2-018 多项式A除以B
题目
这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。
输入格式:
输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下:
N e[1] c[1] ... e[N] c[N]
其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c[i]是第i个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。
输出格式:
分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为0 0 0.0。但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项-1/27,但因其舍入后为0.0,故不输出。
输入样例
4 4 1 2 -3 1 -1 0 -1
3 2 3 1 -2 0 1
输出样例
3 2 0.3 1 0.2 0 -1.0
1 1 -3.1
题解
前提:掌握多项式除法的数学知识.
数据结构:使用map<int, double>来存储多项式,键为阶数,值为系数.
使用递归来模拟多项式除法,直到被除数阶数小于除数阶数.
在得到结果(商和余数)之后,对其中舍入后为0.0的部分进行删除(注:由于在删除过程中改变容器容量,迭代器的使用要小心).
注意极端情况,为0多项式.
个人代码
#include <bits/stdc++.h>
using namespace std;
map<int, double, greater<>> shang;
map<int, double, greater<int>> yu;
map<int, double, greater<int>> beichu;
map<int, double, greater<int>> chushu;
void get_res(map<int, double, greater<int>> bei, \
map<int, double, greater<int>> chu) {
if (bei.empty() || chu.empty()) return;
int bei_jie = (*bei.begin()).first;
double bei_xi = (*bei.begin()).second;
int chu_jie = (*chu.begin()).first;
double chu_xi = (*chu.begin()).second;
if (bei_jie<chu_jie) {
yu = bei;
return;
}
double mul = bei_xi/chu_xi;
int def_jie = bei_jie-chu_jie;
shang.insert({def_jie, mul});
for (auto [jie, xi]: chu) {
double new_xi = mul*xi;
int new_jie = jie+def_jie;
bei[new_jie] -= new_xi;
if(bei[new_jie]==0) {
bei.erase(bei.find(new_jie));
}
}
get_res(bei, chu);
}
int main() {
int N;
cin>>N;
for (int i = 0; i<N; i++) {
int a, b;
cin>>a>>b;
beichu.insert({a, b});
}
cin>>N;
for (int i = 0; i<N; i++) {
int a, b;
cin>>a>>b;
chushu.insert({a, b});
}
get_res(beichu, chushu);
for (auto it = shang.begin(); it!=shang.end();) {
if (fabs(it->second)<0.05) {
it=shang.erase(it);
}
else it++;
}
if (shang.size()==0) {
printf("0 0 0.0\n");
}
else {
cout << shang.size();
for (auto &a: shang) {
printf(" %d %.1lf", a.first, a.second);
}
cout << endl;
}
for (auto it = yu.begin(); it!=yu.end();) {
if (fabs(it->second)<0.05) {
it = yu.erase(it);
}
else it++;
}
if (yu.size()==0) {
printf("0 0 0.0\n");
}
else {
cout << yu.size();
for (auto &a: yu) {
printf(" %d %.1lf", a.first, a.second);
}
cout << endl;
}
}
天梯赛 L2-018 多项式A除以B的更多相关文章
- 团体程序设计天梯赛-练习集-L1-037. A除以B
L1-037. A除以B 真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果. 输入格式: 输入在第一行给出两个整数A和B(-100 <= A, ...
- PTA天梯赛L2
L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...
- 多项式A除以B
这个问题我是在PAT大区赛题里遇见的.题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数 ...
- 第四届CCCC团体程序设计天梯赛 后记
一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
- 【CCCC天梯赛决赛】
cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...
- 记第一届 CCCC-团体程序设计天梯赛决赛 参赛
其他都没什么,上午报道,下午比赛两个半小时,最后139分 但四我超遗憾的是,最后在做L3-1二叉搜索树,因为看到有辣么多人做出来,可是我没做出来啊 比赛结束后看了看其他两道当场吐血,L3-3直捣黄龙不 ...
- L1-049 天梯赛座位分配
L1-049 天梯赛座位分配 (20 分) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i ...
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
随机推荐
- Trie 字典树的原理和应用解析
如何高效地存储和查找大量字符串或前缀?比如自动补全.拼写检查.敏感词过滤等场景,都对字符串的处理速度有很高要求.哈希表虽然查找快,但并不擅长前缀匹配:普通树结构虽然灵活,但对于大量字符串的处理效率并不 ...
- java基础(变量与数据类型)
数据类型 计算机内存分为 : 1.寄存器(java不能直接控制) 2.栈 存储位置:先进后出,存取数据效率高,仅次于寄存器,存储空间小,不能存大量数据,存放基本类型数据 3.堆 效率低,位置随机分配, ...
- 前端开发系列016-基础篇之Javascript面向对象(五)
一.严格模式 说明 在JavaScript中有严格模式和非严格模式两种运行环境 关键字 "use strict"; 实现严格模式 只需要在脚本代码中添加上上述关键字即可. 关键字具 ...
- C++ linux 信号量
简介 信号量本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写. 它不以传送数据为目的,主要是用来保护共享资源(共享内存.消息队列.socket连接池.数据库连接池等) ...
- Linguistics-English-Happy Labor Day September 2, 2024
Celebrating the many contributions workers have made to America's strength, prosperity and well-bein ...
- Blog 迁移通知
在 $2025$ 年 $7$ 月 $19$ 日之前的所有 Blog 将于近期迁移至博客园,但原 Blog 仍然保留. 说一个不能理解的东西. 博客园的 $\KaTeX$ 源码多行公式不得换行,且原本的 ...
- 基础篇:6.3)形位公差-要素 Feature
本章目的:理解形位公差研究的对象-要素,即点.线.面. 1.定义 2.类型 2.1 按存在的状态分 2.2 按结构特征分 2.3 按所处的地位分 2.4 按结构性能分 2.5 按与尺寸关系分 3. ...
- Entities Graphics 和 GPU Skinning
Entities Graphics 是 Unity 官方提供的 DOTS 渲染方案: 包名:com.unity.entities.graphics 设计目标:让 ECS 实体也能拥有 Mesh + M ...
- Unity随机地图之多边形生态圈地图生成(含源码)
Minecraft地图生成原理剖析 https://zhuanlan.zhihu.com/p/43566129 https://zhuanlan.zhihu.com/p/43579344 https: ...
- unity A星寻路教程
核心代码 使用说明: 需要自行设置,地图数据,起点,终点 直接调用 AStarPath.FindPath 即可 using System.Collections; using System.Co ...