YZOI Easy Round 2_化简(simplify.c/cpp/pas)
Description
给定一个多项式,输出其化简后的结果。
Input
一个字符串,只含有关于字母x 的多项式,不含括号与分式,没有多余的空格。
Output
一个字符串,化简后的多项式,按照次数从大到小的顺序输出各项。
Input Sample
x^3+3*x^4-2*x^3+1-x
Output Sample
3*x^4-x^3-x+1
Hint
每项系数<10,次数<6,项数<20。字符串长度不超过100。
很烦的模拟 代码如下:
- #include<iostream>
- #include<cstdio>
- using namespace std;
- const int maxn=1000+10;
- string s;
- int a[maxn],lc=1,len;
- bool first=true;
- int main()
- {
- // freopen("simplify.in","r",stdin);
- // freopen("simplify.out","w",stdout);
- cin>>s;
- len=s.size();
- if(len==1)
- {
- cout<<s[0];
- return 0;
- }
- for(int i=0;i<len;i++)
- {
- if(s[i]=='x')
- {
- if(i==3)
- {
- if(s[0]=='-')
- {
- if(s[4]=='^')
- {
- a[s[5]-'0']-=s[1]-'0';
- }
- else
- {
- a[1]-=s[1]-'0';
- }
- continue;
- }
- }
- if(s[0]>='0'&&s[0]<='9'&&i==2)
- {
- if(s[3]=='^')
- {
- a[s[4]-'0']+=s[0]-'0';
- }
- else
- {
- a[1]+=s[0]-'0';
- }
- continue;
- }
- // if(i==0)
- // {
- // a[1]++;
- // continue;
- // }
- if(s[i+1]=='^')
- {
- if(i==0)
- {
- a[s[i+2]-'0']++;
- continue;
- }
- if(s[i-1]=='*')
- {
- if(s[i-3]=='+')
- a[s[i+2]-'0']+=s[i-2]-'0';
- else if(s[i-3]=='-')
- a[s[i+2]-'0']-=(s[i-2]-'0');
- }
- else
- {
- if(i==0)
- {
- a[s[i+2]-'0']++;
- continue;
- }
- if(s[i-1]=='+'||s[i-1]=='-')
- {
- if(s[i-1]=='-')
- a[s[i+2]-'0']--;
- else
- a[s[i+2]-'0']++;
- }
- else
- {
- a[s[i+2]-'0']--;
- }
- }
- }
- else
- {
- if(s[i-1]=='+')
- {
- a[1]++;
- }
- else
- {
- a[1]--;
- }
- }
- }
- else
- {
- if(s[i]>='0'&&s[i]<='9')
- {
- if(s[i-1]=='^'||s[i+1]=='*')
- continue;
- a[0]+=s[i]-'0';
- }
- }
- }
- for(int i=0;i<len;i++)
- {
- if(s[i]=='^')
- lc=max(lc,s[i+1]-'0');
- }
- for(int i=lc;i>=0;i--)
- {
- if(a[i]==0)
- continue;
- if(i==0)
- {
- if(a[i]>0)
- {
- if(first)
- {
- cout<<a[i];
- first=false;
- continue;
- }
- cout<<'+'<<a[i];
- }
- else
- {
- cout<<'-'<<a[i];
- }
- continue;
- }
- if(i==1)
- {
- if(a[i]>0)
- {
- if(a[i]==1)
- {
- if(first)
- {
- cout<<"x";
- first=false;
- continue;
- }
- cout<<"+x";
- }
- else
- {
- if(first)
- {
- cout<<a[i]<<"*x";
- first=false;
- continue;
- }
- cout<<"+"<<a[i]<<"*x";
- }
- }
- else
- {
- if(a[i]==-1)
- {
- cout<<"-x";
- }
- else
- {
- cout<<a[i]<<"*x";
- }
- }
- continue;
- }
- if(a[i]>0)
- {
- if(a[i]==1)
- {
- if(first)
- {
- cout<<"x^"<<i;
- first=false;
- continue;
- }
- else
- {
- cout<<"+x^"<<i;
- }
- }
- else
- {
- if(first)
- {
- cout<<a[i]<<"*x^"<<i;
- first=false;
- continue;
- }
- else
- {
- cout<<"+"<<a[i]<<"*x^"<<i;
- cout<<9999999<<endl;
- }
- }
- }
- else
- {
- if(a[i]==-1)
- {
- cout<<"-x^"<<i;
- }
- else
- {
- cout<<a[i]<<"*x^"<<i;
- }
- }
- }
- // cout<<endl;
- // for(int i=8;i>=0;i--)
- // cout<<a[i]<<' ';
- // cout<<endl;
- // cout<<a[3]<<endl;
- return 0;
- }
YZOI Easy Round 2_化简(simplify.c/cpp/pas)的更多相关文章
- YZOI Easy Round 2_回文串 string
原文链接:http://laphets1.gotoip3.com/?id=18 Description 给出一个由小写字母组成的字符串,其中一些字母被染黑了,用?表示.已知原来的串不是 一个回文串,现 ...
- HDU 4565 So Easy! 数学 + 矩阵 + 整体思路化简
http://acm.hdu.edu.cn/showproblem.php?pid=4565 首先知道里面那个东西,是肯定有小数的,就是说小数部分是约不走的,(因为b限定了不是一个完全平方数). 因为 ...
- 【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简)
简述 mapReduce从字面上来理解就是两个过程:map映射以及reduce化简.是一种比较先进的大数据处理方法,其难度不高,从性能上来说属于比较暴力的(通过N台服务器同时来计算),但相较于grou ...
- matlab化简符号表达式
化简符号表达式计算机毕竟还是挺笨的, 经过一系列的符号计算后, 得到的结果可能只有它自己才能看懂, Matlab提供大量函数以用于符号表达式的化简. collect(f): 函数用途是合并多项式中相同 ...
- NOIP201402比例化简
比例化简 [问题描述]在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有 1498 人,反对的有 902 人,那么赞同与反对的比例可以简单的记为1498:9 ...
- 化简复杂逻辑,编写紧凑的if条件语句
当业务逻辑很复杂,涉及多个条件的真假,或者多种条件下都会执行同一动作时,如何编写紧凑的if语句呢?本文借由一个实际例子,利用数学的布尔逻辑整理条件,最终产生if语句. 问题 在<X3 重聚> ...
- 《Linear Algebra and Its Application》-chaper1-行化简法解决线性方程组
在实际生产生活中,需要我们解大量的线性方程组,例如是有探测.线性规划.电路等,这里我们便从理论角度建立一套解决线性方程组的体系. 线性方程组: 形如下面形式的方程组称为线性方程组. 回想起解决二元线性 ...
- poj3708:函数式化简+高精度进制转换+同余方程组
题目大意 给定一个函数 找出满足条件 等于 k 的最小的x m,k,d已知 其中 m,k 很大需要使用高精度存储 思路: 对 函数f(m)进行化简 ,令t=ceil( log(d,m) ) 可以得 ...
- 化简复杂逻辑,编写紧凑的if条件语句(二):依据if子句顺序化简条件
<化简复杂逻辑,编写紧凑的if条件语句>已经得出了跳.等.飞.异常的各自条件,方便起见这里重新贴一下. 立即跃迁:!a && b && d 等待跃迁:!a ...
随机推荐
- CPSR和SPSR(转)
转载地址:http://blog.chinaunix.net/uid-28458801-id-3487199.html CPSR:程序状态寄存器(current program status regi ...
- Classical Inheritance in JavaScript
JavaScript is a class-free, object-oriented language, and as such, it uses prototypal inheritance in ...
- 输入框修改placeholde颜色
::-webkit-input-placeholder { color: red; } :-moz-placeholder {/* Firefox 18- */ color: red; } ::-mo ...
- Yii 通过composer 安装的方法
Yii2框架可以通过两种方式 安装 : 第一种方法: Yii2有两个模板 一个是基础模板,一个是高级模板,基础可能简单点吧.........,现在直接从 https://github.com/yi ...
- [D3] 11. Basic D3 chart interactivity on(), select(this), classed(class, trueorfalse)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Hadoop-2.2.0中文文档—— Common - 服务层认证
目的 此文档描写叙述了怎样为Hadoop配置和管理 Service Level Authorization . 预备条件 确保已经安装Hadoop,配置和设置都正确了. 很多其它细节,请看:* 首次使 ...
- PHP文件头部(header)解释
1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type. 2. Accept-Charset: 浏览器申 ...
- 空格&nbsp在不同浏览器中显示距离不一致问题解决方法
在ie.firefox.chrome浏览器上显示的效果不太一样,主要是前面的空格宽度不同. 网上资料说不同的浏览器会有不同的默认字体.一般 IE默认字体都是宋体,而firefox和chrome的默 ...
- oracle用户管理入门
1.创建一个新用户(普通) create user 用户名 identified by 密码 示例,创建一个名叫小明的用户,密码为xm 2.以管理员的身份给普通用户修改密码(当普通用户忘掉自己的密码时 ...
- 关于Android NDK
把解压后的ndk放在自己想放的位置 环境变量:ndk根目录添加到PATH=$PATH:<ndk-root-path> 使用NDK:在自己工作目录(可以是随意位置)下创建<Test&g ...