zznu-oj-2134- 发红包!!!-【多项式加法,模拟题目】
2134: 发红包!!!
题目描述
给你两个最简多项式,请输出两个多项式相加后的结果。
给定的多项式的格式为ax^num1+bx^num2+...其中x前面的a,b代表系数num代表指数(次方数),输入按照多项式的指数从高到低,
输入的x项系数不包含前导0,系数为整数,系数的绝对值小于等于200,指数为正数且指数小于等于200。 输入 第一行一个case代表测试实例(case<=)
第二行一个字符串,代表第一个最简多项式。
第三行一个字符串,代表第二个最简多项式。 输出 一个字符串,代表相加后的最简多项式。
样例输入(新加了几组样例,基本涵盖了所有的后台样例) 1
2x^3+3x+5 4x^2-2x
0 0
-9 8
922 -81
x^2 1x^55
2x^2+x+32 12
x^12 32
-x^3 x^2
样例输出 2x^+4x^+x+
大致思路:
暴力模拟,先整体把字符串逐个处理成仅包含前缀系数a和幂的b ,然后存进ans[ 幂数 ] =前缀系数 的ans数组中,最后注意“-1”和“1”的前缀系数!
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<math.h>
#include<map>
#include<set>
#define ll long long
using namespace std;
#define N 1000008
#define lson rt<<1
#define rson rt<<1|1
struct node{
ll a,b;
}p[N];
ll ans[N];
int cnt; //表示个数 char s1[N],s2[N];
void cul(char s[]){
int len=strlen(s);
for(int i=;i<len;){ //挖掘ax^b+
ll op=;
if(s[i]=='+'){
i++;
}
else if(s[i]=='-'){
op=-;
i++; } int a=,b=;
bool f=,g=; while(i<len&&s[i]!='+'&&s[i]!='-'){
if(s[i]=='x'){
i++;
f=;
continue;
} if(f==&&s[i]>=''&&s[i]<=''){
a=a*+s[i]-'';
}
else if(f==&&s[i]>=''&&s[i]<=''){ b=b*+s[i]-'';
g=;
}
i++;
}
a*=op;
if(f==&&a==)a=*op;
if(f==&&b==&&g==)b=; p[++cnt].a=a;
p[cnt].b=b;
} }
void debug(){ for(int i=;i<=cnt;i++)
printf("【【【 %lldx^%lld\n",p[i].a,p[i].b);
}
int main(){ int T;
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%s%s",s1,s2);
cnt=;
cul(s1);
cul(s2); // debug(); //调试函数
// printf("%lld %lld\n",p[1].a,p[1].b);
// printf("%lld %lld\n",p[2].a,p[2].b); memset(ans,,sizeof(ans)); for(int i=;i<=cnt;i++){
ans[p[i].b]+=p[i].a ;
} int f=;
for(int i=;i>=;i--){ //遍历次方数 if(ans[i]!=){
if(!f&&i==){ //对最后零项(特殊处理)
if(ans[]!=){
// if(ans[i]>0)cout<<"+";
printf("%lld",ans[i]);
f=;
}
break;
}
else if(i==){
if(ans[]!=){
if(ans[i]>)cout<<"+";
printf("%lld",ans[i]);
f=;
}
break;
} if(!f){
f=;
if(ans[i]!=&&ans[i]!=-)cout<<ans[i];
else if(ans[i]==-)cout<<"-"; if(i==)cout<<"x";
else if(i>)
cout<<"x^"<<i; }
else{
if(ans[i]>) cout<<"+"; if(ans[i]!=&&ans[i]!=-)cout<<ans[i];
else if(ans[i]==-)cout<<"-"; if(i==)cout<<"x";
else if(i>)
cout<<"x^"<<i;
}
}
}
if(f==)cout<<"";
cout<<endl;
} return ;
}
(面向后台数据编程)
zznu-oj-2134- 发红包!!!-【多项式加法,模拟题目】的更多相关文章
- 微信小程序发红包
背景: 近期一个朋友公司要做活动,活动放在小程序上.小程序开发倒是不难,不过要使用小程序给微信用户发红包,这个就有点麻烦 确定模式: 小程序目前没有发红包接口,要实现的话,只能是模拟红包,即小程序上做 ...
- JAVA发红包案例
模拟拼手气红包* 对于指定总金额以及红包个数,可以生成不同金额的红包,*,每个红包金额随机生成. * 分析这个题目:* 1.首先需要一个分发红包的方法.输入的参数是 总金额 以及 红包个数.* 按照这 ...
- 程序设计入门——C语言 第7周编程练习 1多项式加法(5分)
第7周编程练习 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- PHP实现发红包程序
我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...
- PHP实现发红包程序(helloweba网站经典小案例)
我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...
- 使用PHP编写发红包程序
使用PHP编写发红包程序 http://www.jb51.net/article/69815.htm 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-07-22 微信发红 ...
- js 发红包
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- 网易云课堂_程序设计入门-C语言_第六章:数组_1多项式加法
1 多项式加法(5分) 题目内容: 一个多项式可以表达为x的各次幂与系数乘积的和,比如: 现在,你的程序要读入两个多项式,然后输出这两个多项式的和,也就是把对应的幂上的系数相加然后输出. 程序要处理的 ...
- 发红包android
立即春节,写个应景的控件 思路分析 1.红包沿着不同的轨迹由上往下运动 2.当手指捕获到一个红包,红包停止原先的运动,能够随着手指的滑动做跟手操作 3.当手指动作停止后,红包放大 4. ...
随机推荐
- 《C语言程序设计》学习笔记(二)
第八章 函数 函数的基本概念 定义:函数由函数名.参数和函数体组成. 函数定义的一般形式: 类型说明符 函数名(形式参数声明) { [说明与定义部分] 语句: } 说明: 1.类型说明符用来说明函数的 ...
- conda安装的国内镜像配置,实现快速下载
conda安装的国内镜像配置,实现快速下载 anaconda的所有的软件包全部在国外,安装起来很麻烦,关键是下载速度慢,而且经常中断,所以需要配置国内安装的镜像,下载速度就很快了. 一.conda换国 ...
- .git泄露及利用php弱类型松散比较构造json的payload
一道ctf题,文章搬运到了自己的网站上: http://101.132.137.140:202/archives/2019-11-16
- jira邮箱配置
系统-邮件-外发邮件
- java中this的使用
java中的this随处可见,用法也多,现在整理有几点:this1.当全局变量跟局部变量重名时,表示使用全局变量(此时this指代本类对象)例有一类class A{ String name; ...
- 《Mysql - SQL优化》
一:在查询语句时,应该注意的优化问题 - SELECT语句务必指明字段名称 - SELECT * 会增加很多不必要的消耗(CPU.IO.内存.网络带宽) - 同时会让 Mysql 优化器无法优化 - ...
- PS复制图层快捷键
选中图层,按“Ctrl + J”即可快速复制图层.
- PAT甲级 字符串处理题_C++题解
字符串处理题 目录 <算法笔记> 重点摘要 1001 A+B Format (20) 1005 Spell It Right (20) 1108 Finding Average (20) ...
- Bean的三种实例化方式
在面向对象程序中,如要使用某个对象,就需要先实例化这个对象.同样的,在Spring中,要想使用容器中的Bean,也需要实例化Bean.实例化Bean有三种方式,分别是:构造器实例化.静态工厂实例化.实 ...
- 初始STM32固件库
1-汇编编写的启动文件 startup_stm32f10x_hd.s:设置堆栈指针.设置PC指针.初始化中断向量表.配置系统时钟.对用C库函数_main,最终去到C的世界 2-时钟配置文件 syste ...