当前位置: 首页 > news >正文

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

《编程思维与实践》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   //指数小于50void 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++;        //跳过xif(*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];     //长度不超过100while(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;
}

相关文章:

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

《编程思维与实践》1037.一元多项式乘法 题目 思路 比较容易想到将步骤分为三步: 1.读取多项式每项的系数(coefficient)和对应的指数(dim); 2.进行多项式乘法; 3.输出进行多项式乘法后的非零项系数. 其中多项式乘法可以通过循环来处理,输出可以用if来判断系数是否为0,需要考虑…...

top命令学习

文章目录 一、top命令回显信息含义1、第一行2、第二行3、第三行4、第四行5、第五行6、第六行进程信息 二、top简单交互1、按数字“1”&#xff0c;显示列出所有cpu的信息2、按“M”&#xff0c;按内存使用率从大到小排序3、按“P”&#xff0c;按CPU使用率从大到小排序 一、top…...

PHP数组的功能及实现案例

目录 前言 一、什么是数组 二、创建关联数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 三、创建索引数组 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.若有选择&#xff0c;可实现在目录里进行快速查找&#xff…...

Cesium实践(4)——空间数据加载

文章目录 前言几何形体点线面体 标签文字图标 几何文件GeoJsonKMLCZML 三维模型总结 前言 本文介绍Cesium如何加载空间数据&#xff0c;空间数据即明确定义在三维空间中的数据&#xff0c;空间数据包括以下几类&#xff1a;1、几何形体&#xff08;点、线、面、体&#xff09;…...

FreeRTOS(三)——应用开发(一)

文章目录 0x01 FreeRTOS文件夹FreeRTOSConfig.h文件内容上面定义的宏决定FreeRTOS.h文件中的定义0x02 创建任务创建静态任务过程configSUPPORT_STATIC_ALLOCATION创建动态任务过程configSUPPORT_DYNAMIC_ALLOCATION 0x03 FreeRTOS启动流程启动流程概述 0x04 任务管理任务调度器…...

这些 Linux 的自动化技巧,教你轻松完成任务

linux 系统的 web 网站在运营状态时&#xff0c;我们常需要对网站进行维护&#xff0c;例如查看资源剩余并做出响应、日志分割、数据整理&#xff0c;在特定状态执行特定任务等等&#xff0c;这些都会需要 linux能实现自动执行某些任任务。本篇博文介绍如何进行常见的linux自动…...

PAL制搜台

PAL电视制式 PAL电视制式(Phase Alternating Line)采用625线制式,视讯制式采用PAL-B/G、PAL-D/K、PAL-I等。PAL电视不像NTSC制式有中心频点,它采用宽带的频率范围进行电视信号的调制和传输。 PAL电视制式频率 PAL电视采用UHF(超高频)和VHF(甚高频)两个频段进行电视信号的传输…...

SpringBoot 使用 Docker Registry Api

Spring Boot是一个快速开发Web应用程序的框架&#xff0c;它提供了许多方便的工具和库&#xff0c;使得开发过程更加高效。在部署Spring Boot应用程序时&#xff0c;使用Docker容器是现代化和流行的选择。在此背景下&#xff0c;本文将介绍如何使用Docker Registry API来构建、…...

Win10任务栏卡死怎么办?这3个方法快收藏!

案例&#xff1a;win10任务栏卡死 【姐妹们&#xff0c;我的win10任务栏一直卡着&#xff0c;我完全没法使用计算机了&#xff0c;遇到这种情况&#xff0c;我应该怎么做呢&#xff1f;求大家给我支支招&#xff01;感谢感谢&#xff01;】 我们使用电脑的过程中&#xff0c;…...

这一篇搞定Spring

文章目录 一、引言1.1 原生web开发中存在哪些问题&#xff1f; 二、Spring框架2.1 概念2.2 访问与下载 三、Spring架构组成四、山寨版的Spring容器4.1准备工作4.2 山寨IOC容器4.3 配置文件告诉容器 管理哪些bean4.4 相关类4.5 测试 容器 五、构建Maven项目5.1 新建项目5.2 选择…...

软测如果这么学,培训班都得倒闭,直接省去上万元的学费

俗话说外行看热闹&#xff0c;内行看门道。 写这篇文章&#xff0c;是希望把我的一些我认为是非常有价值的经验总结出来&#xff0c;能够帮助刚做测试不久的新同学&#xff0c;或者是测试经验丰富的老同学以共享。 希望我们可爱的新同学&#xff0c;准备要在测试领域耕耘的伙…...

赎金信(Hash的应用)

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 来源&#xff1a;力扣&#xff0…...

4月更新!EasyOps®全平台27项新功能一口气来袭~

又到了每月产品盘点时刻&#xff0c;27大新功能上线和升级优化&#xff0c;设计Hyperlnsight超融合持续观测平台、DevOps持续交付平台、AutoOps自动化运维平台、ITSM服务平台、公共服务&#xff0c;在不断的技术创新过程中&#xff0c;进一步加速IT运维效率升级。 下面和小编一…...

程序计算任意连续的12个月公里数不超三万公里预警

为了比亚迪的电池终身质保&#xff0c;写了个简单算法&#xff0c;计算任意12个连续的月份公里数加起来不超过3万公里的预警import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors;/***…...

【IMU】IMU知多少之42866

ICM-42688-P数据手册中加速度计和角速度计的超量程阈值分别如下&#xff1a; 加速度计超量程阈值&#xff1a; 数字量&#xff08;LSB&#xff09;&#xff1a;16g 模拟量&#xff08;g&#xff09;&#xff1a;22g 角速度计超量程阈值&#xff1a; 数字量&#xff08;LSB&a…...

谁说不能用中文写代码?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 现代计算机和编程的起源和推动力量主要源自美国&#xff0c;再加上26个字母很便于表示&#xff08;算上大小写&#xff0c;6位bit就够了&am…...

Java阶段二Day07

Java阶段二Day07 文章目录 Java阶段二Day07V17UserControllerDispatcherServletControllerRequestMapping V18DispatcherServletHandleMapping V19BirdBootApplication 线程池线程的执行过程线程池API 数据库数据库的基本概念数据库管理系统中常见的概念 SQL分类DDL语言-数据定…...

React Native iOS打包详细步骤

一、在自己项目的iOS文件夹下新建一个文件夹取名bundle 二、将打包命令写到项目package.json文件里&#xff0c;终端执行 npm run bundle-ios 先添加如下&#xff08;注意&#xff1a;这里写的路径"./ios/bundle"就是上面bundle创建的文件夹&#xff09;&#xff1a…...

I/O复用函数,poll和epoll的用法与select、poll、epoll的区别

1.poll的接口介绍 poll系统调用和select类似&#xff0c;也是在指定时间内轮询一定数量的文件描述符&#xff0c;已测试其中是否有就绪者。poll的原型如下&#xff1a; # include <poll.h> int poll(struct pollfd*fds,nfds_t nfds,int timeout); poll系统调用成功返回就…...

大数据周会-本周学习内容总结011

开会时间&#xff1a;2023.04.23 15:00 线下会议 目录 01【spark】 02【es同步mysql】 03【下周任务】 01【spark】 尚硅谷大数据技术Spark教程-笔记01【Spark&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程-笔记02【SparkCore&am…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...