文档章节

多项式的加分和乘法

 阿豪boy
发布于 2017/02/25 11:13
字数 557
阅读 3
收藏 0
点赞 0
评论 0

https://www.patest.cn/contests/pat-a-practise/1002

多项式的加法

可以将多个多项式看成一个多项式,进行化简即可

1,令p[MAX]表示多项式,其中p[n]表示幂次为n的项的系数,初值为0,count表示系数非零项的个数,初值为0

2,先按照输入格式读入第一个多项式,在读入第二个多项式,并把对应系数直接加到第一个多项式上

3,计算非零项的个数并输出非零项

4,由于可能出现抵消的情况,count的计算应在最后化简后

#include <iostream>
#include <cstdio>
using namespace std;
const int MAX=1111;
double p[MAX] ={0};
int main(int argc, char *argv[])
{
	int k,n,count=0;
	double a;
	scanf("%d",&k);
	for(int i=0;i<k;i++){
		scanf("%d %lf",&n,&a);
		p[n] += a;
	}	 
	scanf("%d",&k);
	for(int i=0;i<k;i++){
		scanf("%d %lf",&n,&a);
		p[n] += a;
	}
	
	for(int i=0;i<MAX;i++){
		if(p[i]!=0) count++; 
	}
	printf("%d",count);
	for(int i=MAX-1;i>=0;i--)
		if(p[i]!=0) printf(" %d %.1lf",i,p[i]);
	return 0;
}

 

 

乘法

我的代码,转换为加法,需要引入ans数组

#include <iostream>
#include <cstdio>
const int MAX = 2020;
double p[MAX] = { 0 };
double ans[MAX] = { 0 };
using namespace std;
int main(int argc, char *argv[]) {
	int n, k, m;
	double t;
	int cnt = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d %lf", &k, &t);
		p[k] += t;
	}
	scanf("%d", &m);
	for (int i = 0; i < m; i++) {
		scanf("%d %lf", &k, &t);
		for (int j = 0; j < MAX; j++) {
			if (p[j] != 0.0) {
				int a;
				double b;
				a = j + k;
				b = p[j] * t;
				ans[a] += b;
			 
			}

		}
	}
	cnt = 0;
	for (int i = 0; i < MAX; i++)
		if (ans[i] != 0.0) cnt++;
	printf("%d", cnt);

	for (int i = MAX-1; i >= 0; i--)
		if (ans[i] != 0.0)
			printf(" %d %.1lf", i, ans[i]);
	return 0;
}

 

其他做法

#include <iostream>
#include <cstdio>
using namespace std;
struct Poly{
	int exp;	//指数 
	double cof;	//系数 
}p[1010];		//第一个多项式

double ans[2020];//存放结果
 
int main(int argc, char *argv[])
{
	int n,m,cnt=0;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d %lf",&p[i].exp,&p[i].cof);
	scanf("%d",&m);
	for(int i=0;i<m;i++){
		int exp;
		double cof;
		scanf("%d %lf",&exp,&cof);	//第二个多项式的指数和系数
		for(int j=0;j<n;j++)
			ans[exp+p[j].exp] += (cof*p[j].cof); 
	}
	for(int i=0;i<=2000;i++)
		if(ans[i]!=0.0 ) cnt++;
	printf("%d",cnt);
	for(int i=2000;i>=0;i--)
		if(ans[i]!=0.0)
			printf(" %d %.1lf",i,ans[i]);
			
	return 0;
}

 

© 著作权归作者所有

共有 人打赏支持
粉丝 21
博文 880
码字总数 631339
作品 0
西安
数学竖式排版中不为人知的技巧

在使用mathtype的过程中,难免会遇到一些不知道怎么操作的情况,这个时候我们就需要去找一些教程来学习一下。数学数式一般涉及到三种类型,即算术“加、减、乘、除”的竖式,代数多式加法、乘...

学术研究软件 ⋅ 2016/05/03 ⋅ 0

用链表实现一元多项式的加、减、乘、求导运算

  在数据结构线性表的链表学习中有一个很有趣的题目:计算两个多项式的加、减、乘和多项式的导数。   题目不难,将多项式的系数和指数存进链表,然后进行相应操作即可。   一、加法: ...

Jung_zhang ⋅ 2015/09/09 ⋅ 0

【4C练习题】一元多项式的乘法与加法运算(20 分)

传送门 // 感觉这道题还是挺坑的, 做法当然是模拟来做. 就是可能有一个点大家没理解清楚, 那就是说的系数为0的项不进行输出, 如果最后没有项, 那么在输出零多项式(即 0, 0), 剩下的做法就是模...

Anxdada ⋅ 02/01 ⋅ 0

(转)---再说卷积

信号处理中的一个重要运算是卷积.初学卷积的时候,往往是在连续的情形,   两个函数f(x),g(x)的卷积,是∫f(u)g(x-u)du   当然,证明卷积的一些性质并不困难,比如交换,结合等等,但是对于...

itfanr ⋅ 2014/12/22 ⋅ 0

bzoj5250 九省联考 秘密袭击【树上背包+拉格朗日插值+线段树合并】

解题思路: 设 将第三维用生成函数的形式表达,即: 再设Gu,i 是u 子树内Fv,i 之和,那么答案就是∑i=1WG1,i 中k 次项之后所有系数之和。 如果暴力维护多项式乘法是O(n4)或O(n3logn) 的。 注...

cdsszjj ⋅ 04/18 ⋅ 0

[codevs3123]大整数乘法(快速傅立叶变换FFT)

【题意】 给出两个整数a和b,输出a*b的值 【输入】 输入两行 第一行输入a 第二行输入b 【输出】 输出一行 输出a*b 【样例输入】 2 3 【样例输出】 6 【提示】 1<=a<=10^100000,1<=b<=10^100...

CABI_ZGX ⋅ 2017/12/03 ⋅ 0

区块链研习 | 详解零知识证明的四大基础技术,如何与以太坊发生反应

雷锋网(公众号:雷锋网)按:原文标题为《zkSNARKs in a nutshell》,作者是以太坊智能合约语言Solidity的发明人Christian Reitwiessner。译者杨文涛,授权转载自作者知乎专栏。 摘要: zkSN...

伊莉 ⋅ 2017/12/29 ⋅ 0

一元多项式相乘降幂排序(数据结构c++)

最近刚做完数据结构程序设计,怕自己忘了,就写出来。 正文开始。-- 一元多项式相乘就是用两个指针分别指向俩多项式的head->next;(创建的链表是带头结点的),用两个while语句,让两个链表...

刘小成_da7e ⋅ 2017/12/07 ⋅ 0

[UOJ34]多项式乘法(快速傅立叶变换FFT)

【题意】 给你两个多项式,请输出乘起来后的多项式。 【输入】 第一行两个整数 n 和 m,分别表示两个多项式的次数。1<=n,m<=10^5 第二行 n+1 个整数,分别表示第一个多项式的 0 到 n次项前的...

CABI_ZGX ⋅ 2017/12/03 ⋅ 0

4-1 Mallet小波分解重构程序

Mallet小波在小波届的地位类似fft在傅立叶变化中的地位,在分解过程中先滤波后抽取,重构过程中先插值后滤波,可以操作正交小波变换和双正交小波变换。 本文中的程序是对构造的信号进行高低通...

俪文 ⋅ 2014/04/14 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 28分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 51分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 52分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 今天 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部