当前位置: 首页 > 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;
}
http://www.lryc.cn/news/62305.html

相关文章:

  • top命令学习
  • PHP数组的功能及实现案例
  • Cesium实践(4)——空间数据加载
  • FreeRTOS(三)——应用开发(一)
  • 这些 Linux 的自动化技巧,教你轻松完成任务
  • PAL制搜台
  • SpringBoot 使用 Docker Registry Api
  • Win10任务栏卡死怎么办?这3个方法快收藏!
  • 这一篇搞定Spring
  • 软测如果这么学,培训班都得倒闭,直接省去上万元的学费
  • 赎金信(Hash的应用)
  • 4月更新!EasyOps®全平台27项新功能一口气来袭~
  • 程序计算任意连续的12个月公里数不超三万公里预警
  • 【IMU】IMU知多少之42866
  • 谁说不能用中文写代码?
  • Java阶段二Day07
  • React Native iOS打包详细步骤
  • I/O复用函数,poll和epoll的用法与select、poll、epoll的区别
  • 大数据周会-本周学习内容总结011
  • 常见的NoSQL数据库介绍
  • 记录安装Nodejs和HBuilderX搭建、部署微信小程序开发环境(一)
  • (一)pyahocorasick和marisa_trie,字符串快速查找的python包,自然语言处理,命名实体识别可用的高效包...
  • 基于Java+SpringBoot+vue+element驾校管理系统设计和实现
  • Unity中值类型和引用类型及使用时的注意事项
  • PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电
  • AI 这是要杀疯啦!
  • 【精品示例】超实用Python爬虫入门实例——做一个优质舔狗
  • TCP流量控制与拥塞控制
  • Java_异常
  • 自动化工具 接口自动化测试引擎