《编程思维与实践》1037.一元多项式乘法

news2024/9/17 8:18:51

《编程思维与实践》1037.一元多项式乘法

题目

在这里插入图片描述

思路

比较容易想到将步骤分为三步:

1.读取多项式每项的系数(coefficient)和对应的指数(dim);

2.进行多项式乘法;

3.输出进行多项式乘法后的非零项系数.

其中多项式乘法可以通过循环来处理,输出可以用if来判断系数是否为0,需要考虑的是如何读取多项式:

ax^y(a≠±1) , ±x^y , ax(a≠±1) , ±x 和 c(常数项) 为每项可能出现的所有情况.

一般情况只需要利用atoi存取系数,如果存完系数后读取的第一个字符不是x,

那表示读取的是常数项,否则直接跳过x,接着再存指数,最后利用指数为数组下标存系数.

注意的点:

1.对于 a=±1 和 有无 ‘^’ 的情况,用atoi时需要小心.

2.输出的时候指数应该从大到小(逆序).

3.多项式乘法后指数会变大,存结果时数组应该开大一些.

代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define N 100   //指数小于50

void readpoly(char* s,int* coef)    //polynomial 多项式
{
	while(*s!='\0')
	{
		char temp1[N];  
        char temp2[N];
        int i=0;
        int j=0;
        while(*s!='\0'&&(isdigit(*s)||*s=='+'||*s=='-'))  //注意s别越界(条件写前面) 
        {
            temp1[i++]=*s;
            s++;
        }
        if(i==0||(i==1&&!isdigit(temp1[0])))  //a=±1的情形
        {
            temp1[i++]='1';
        }
        temp1[i]='\0';
        if(*s!='x')    //是常数项 (0次方)
        {
            coef[0]=atoi(temp1);          
        }
        else         //非常数项
        {
            s++;        //跳过x
            if(*s=='^')    //判断是不是有'^'
            {
            	s++;
                while(isdigit(*s))
                {
                    temp2[j++]=*s;
                    s++;
                }
                temp2[j]='\0';
                coef[atoi(temp2)]=atoi(temp1);
            }
       		else
            {
                coef[1]=atoi(temp1);
            }
        }
	}
}

void multiply(int* coef1,int* coef2,int* result)
{
	for(int i=0;i<N/2;i++)
	{
		for(int j=0;j<N/2;j++)
		{
			result[i+j]+=coef1[i]*coef2[j];
		}
	}
}

void output(int *result)
{ 
	for(int i=N-1;i>=0;i--)    //逆向 
	{
		if(result[i]!=0)
		{
			printf("%d ",result[i]);
		}
	}
	printf("\n");
} 

int main()
{
	char s[101];     //长度不超过100
	while(scanf("%s",s)!=EOF)
	{
		int coef[2][N/2];       //coefficient 系数  
        memset(coef,0,sizeof(coef));
		readpoly(s,coef[0]);
		scanf("%s",s);
		readpoly(s,coef[1]);    
		int result[N]={0};
		multiply(coef[0],coef[1],result);
		output(result); 
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/466911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多重共线性问题如何解决?

​ 一、多重共线性说明 多重共线性一般是指&#xff1a;如果有两个或者多个自变量高度相关&#xff08;相关系数大于0.8&#xff09;&#xff0c;难以区分一个自变量对因变量的影响和作用&#xff0c;将自变量相关性产生的后果定义为多重共线性&#xff0c;一般提出多重共线性…

Pytorch 安装

Pytorch PyTorch介绍 特点&#xff1a; 1.简单易用、分布式训练、服务器部署方便、移动端部署方便&#xff1b; 2.PyTorch 是基于以下两个目的而打造的python科学计算框架&#xff1a; 无缝替换NumPy&#xff0c;并且通过利用GPU的算力来实现神经网络的加速。 3.通过自动…

ubuntu-18.0.04 鸿蒙OpenHarmony系统源码(OHSP)下载

如果想下载HarmonyOS中 api7里面的java 源码的&#xff0c;可以止步了。因为这一块并没有开源&#xff0c;api 7里面java的部分属于HarmonyOS&#xff0c;不是openharmony的部分… 怪不得网上找不到任何一个介绍Ability.java AbilitySlice.java这种源代码的文章。java应该只是鸿…

Cilium架构简介eBPF数据流向查看

1 环境准备 上一篇文章将 k8s 的网络插件改为 cilium 同时部署了观测平台 hubble&#xff0c;部署方式可参考上篇。 基于eBPF的k8s网络插件Cilium部署与流量治理浅尝 本篇讲一下 cilium 的架构和数据流向的查看方式。首先&#xff0c;你需要一个kubernetes集群&#xff0c;并使…

算法记录 | Day43 动态规划

1049.最后一块石头的重量 II 思路&#xff1a; 本题其实就是尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下的石头最小&#xff0c;这样就化解成01背包问题了。 本题物品的重量为stones[i]&#xff0c;物品的价值也为stones[i]。 对应着01背包里的物品重量weight[i…

[学习笔记] [机器学习] 3. KNN( K-近邻算法)及练习案例

视频链接数据集下载地址&#xff1a;《3. KNN及练习案例》配套数据集 1. K-近邻算法(KNN)概念 学习目标&#xff1a; 掌握K-近邻算法实现过程知道K-近邻算法的距离公式知道K-近邻算法的超参数 K K K值以及取值问题知道kd树实现搜索的过程应用KNeighborsClassifier实现分类知…

什么是ERP?可能是全网最权威的解读

ERP的概念定义 ERP是企业资源规划的简称。要理解ERP是什么&#xff0c;最简单的方法是先思考企业正常运营需要的核心业务流程&#xff0c;如财务、HR、制造、供应链、服务、采购等&#xff0c;而 ERP系统最基础的功能就是帮助企业在集成式系统中高效管理这些流程。因为 ERP 系…

烟火识别智能监测系统 yolov5

烟火识别智能监测系统基于pythonyolov5网络模型算法智能分析技术&#xff0c;烟火识别智能监测算法模型对现场画面进行实时分析&#xff0c;发现现场出现烟火立即抓拍实时告警。我们选择当下卷积神经网络YOLOv5来进行火焰识别检测。6月9日&#xff0c;Ultralytics公司开源了YOL…

Day956.代码现代化 -遗留系统现代化实战

代码现代化 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于代码现代化的内容。 代码现代化的主要模式。 大体的脉络是这样的&#xff1a; 先对代码做可测试化重构&#xff0c;并添加测试&#xff1b;在测试的保护下&#xff0c;安全地重构&#xff1b;在测试的保…

数据链路层相关知识

文章目录 一.数据链路层简介二.MAC地址为什么有了ip地址,我们还要使用mac地址呢? 三.以太网什么是以太网以太网封装帧格式认识MTU谈谈 MTU对IP协议的影响. 一.数据链路层简介 数据链路层的位置和角色:位于物理层和网络层之间,负责实现两个直接相连的节点(主机/路由器)之间的可…

SpringCloud源码之OpenFeign

OpenFeign 基于 OpenFeign 2.2.6.RELEASE版本进行源码阅读 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.2.6.RELEASE</version> </dependen…

Linux_红帽8学习笔记分享_6(yum软件仓库技术)

Linux_红帽8学习笔记分享_6(yum软件仓库技术) 文章目录 Linux_红帽8学习笔记分享_6(yum软件仓库技术)1. RPM软件包的使用技巧1.1如何查询指定软件包是否安装1.2如何删除指定软件包1.3如何安装指定软件包1.5依赖关系 2. YUM软件仓库的配置及使用2.1修改YUM软件仓库的配置文件 3.…

张量、标量、向量和矩阵

张量、标量、向量和矩阵 https://github.com/bovem/publications/tree/master/Linear%20Algebra 张量是一个数据数组(数字、函数等)&#xff0c;它以任意数量(0 或更大)的维度展开。维数称为张量秩。 秩 0 张量 没有维度(0)的张量。 A 是 0 维张量 秩 1 张量 仅在一维中展开的张…

MySQL 字段为 NULL 的5大坑,99%人踩过

数据库字段允许空值(null)的问题&#xff0c;你遇到过吗&#xff1f; 在验证问题之前&#xff0c;我们先建一张测试表及测试数据。 数据库字段允许空值(null)的问题&#xff0c;你遇到过吗&#xff1f; 在验证问题之前&#xff0c;我们先建一张测试表及测试数据。 构建的测试…

如何实现U盘低格?这样操作快速搞定!

案例&#xff1a;怎么对U盘进行低级格式化&#xff1f; 【我的U盘出现了异常&#xff0c;我想对它进行低级格式化处理&#xff0c;有没有小伙伴知道怎么操作&#xff1f;】 随着电脑和移动设备的普及&#xff0c;U盘已经成为我们生活中必不可少的存储工具。当我们使用U盘的时…

xml注入漏洞

一、先认识XML XML有两个先驱——SGML&#xff08;标准通用标记语言&#xff09;和HTML&#xff08;超文本标记语言&#xff09;&#xff0c;这两个语言都是非常成功的标记语言。SGML多用于科技文献和政府办公文件中&#xff0c;SGML非常复杂&#xff0c;其复杂程度对于网络上…

windows中vscode配置C/C++环境

首先要把MinGW的环境安装完&#xff0c;我一般是下载带有MinGW的codeblocks&#xff0c;这样省去自己安装MinGW。因为安装MinGW还挺麻烦的。 安装完codeblocks&#xff0c;找到其安装目录&#xff0c;把bin文件配置到环境变量去&#xff1a; 将bin添加到环境变量 然后打开vsco…

【MySQL高级】——索引数据结构

一、全表遍历 每个数据页一次加载搜索 二、Hash结构 1. Hash简介 2. 两种常见加快查找速度的数据结构 3. 为什么不采用Hash结构 <1> Hash索引仅能满足&#xff0c;!和IN查询。如果进行范围查询&#xff0c;哈希型的索引&#xff0c;时间复杂度会退化为o(n);而树型的“…

PLUS模型和InVEST模型生态系统服务多情景模拟预测、ArcGIS空间数据处理、空间分析与制图、土地利用时空变化

查看原文>>>基于”PLUS模型“生态系统服务多情景模拟预测实践技术应用 目录 第一章、理论基础与软件讲解 第二章、数据获取与制备 第三章、土地利用格局模拟 第四章、生态系统服务评估 第五章、时空变化及驱动机制分析 第六章、论文撰写技巧及案例分析 基于Ar…

B端产品如何搭建用户帮助体系

用户帮助体系可以提升用户的使用体验&#xff0c;引导用户正确的使用产品&#xff0c;并且体验产品的各个功能&#xff0c;B端产品因为其特殊的业务属性和复杂度&#xff0c;通常其学习成本不低。这些成本不仅仅体现在对于复杂业务概念及流程的认知方面&#xff0c;同时体现在整…