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)的更多相关文章

  1. YZOI Easy Round 2_回文串 string

    原文链接:http://laphets1.gotoip3.com/?id=18 Description 给出一个由小写字母组成的字符串,其中一些字母被染黑了,用?表示.已知原来的串不是 一个回文串,现 ...

  2. HDU 4565 So Easy! 数学 + 矩阵 + 整体思路化简

    http://acm.hdu.edu.cn/showproblem.php?pid=4565 首先知道里面那个东西,是肯定有小数的,就是说小数部分是约不走的,(因为b限定了不是一个完全平方数). 因为 ...

  3. 【mongoDB高级篇②】大数据聚集运算之mapReduce(映射化简)

    简述 mapReduce从字面上来理解就是两个过程:map映射以及reduce化简.是一种比较先进的大数据处理方法,其难度不高,从性能上来说属于比较暴力的(通过N台服务器同时来计算),但相较于grou ...

  4. matlab化简符号表达式

    化简符号表达式计算机毕竟还是挺笨的, 经过一系列的符号计算后, 得到的结果可能只有它自己才能看懂, Matlab提供大量函数以用于符号表达式的化简. collect(f): 函数用途是合并多项式中相同 ...

  5. NOIP201402比例化简

    比例化简 [问题描述]在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有 1498 人,反对的有 902 人,那么赞同与反对的比例可以简单的记为1498:9 ...

  6. 化简复杂逻辑,编写紧凑的if条件语句

    当业务逻辑很复杂,涉及多个条件的真假,或者多种条件下都会执行同一动作时,如何编写紧凑的if语句呢?本文借由一个实际例子,利用数学的布尔逻辑整理条件,最终产生if语句. 问题 在<X3 重聚> ...

  7. 《Linear Algebra and Its Application》-chaper1-行化简法解决线性方程组

    在实际生产生活中,需要我们解大量的线性方程组,例如是有探测.线性规划.电路等,这里我们便从理论角度建立一套解决线性方程组的体系. 线性方程组: 形如下面形式的方程组称为线性方程组. 回想起解决二元线性 ...

  8. poj3708:函数式化简+高精度进制转换+同余方程组

    题目大意 给定一个函数 找出满足条件   等于 k 的最小的x m,k,d已知 其中 m,k 很大需要使用高精度存储 思路: 对 函数f(m)进行化简 ,令t=ceil( log(d,m) ) 可以得 ...

  9. 化简复杂逻辑,编写紧凑的if条件语句(二):依据if子句顺序化简条件

    <化简复杂逻辑,编写紧凑的if条件语句>已经得出了跳.等.飞.异常的各自条件,方便起见这里重新贴一下. 立即跃迁:!a && b && d 等待跃迁:!a ...

随机推荐

  1. Python的高级特性之切片、迭代、列表生成式、生成器

    切片 切片就是获取一个list.tuple.字符串等的部分元素 l = range(100) #取[0,5)元素 print(l[:5]) #[0, 1, 2, 3, 4] #在[0,99]中每隔10 ...

  2. HW4.23

    public class Solution { public static void main(String[] args) { double sum = 0; for(int i = 1; i &l ...

  3. BZOJ 2933([Poi1999]地图-区间Dp)

    2933: [Poi1999]地图 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 7   Solved: 7 [ Submit][ Status] ...

  4. SpringMVC 流程 配置 接口

    SpringMVC简介    一 流程介绍 1.角色划分 前端控制器(DispatcherServlet).请求到处理器映射(HandlerMapping).处理器适配器(HandlerAdapter ...

  5. Java工作队列和线程池

    背景    最近的需要做一个与设备通信的web项目.当然,我们需要写好与设备之间的通信协议(socket).大致的时序逻辑时:当用户用浏览器点击页面某一控件后,它就向后台发送一个post请求,后台解析 ...

  6. Shell脚本高级应用 --实现远程MySQL自动查询[转

    #!/bin/sh Host=192.168.5.30 User=abccdef PW=123456 MSG=`mysql -h$Host -u$User -p$PW <<EOF show ...

  7. Spring源代码解析(收藏)

    Spring源代码解析(收藏)   Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的 ...

  8. A Practical Guide to Distributed Scrum - 分布式Scrum的实用指南 - 读书笔记

    最近读了这本IBM出的<A Practical Guide to Distributed Scrum>(分布式Scrum的实用指南),书中的章节结构比较清楚,是针对Scrum项目进行,一个 ...

  9. 怎样克服 JavaScript 框架疲劳?

    [编者按]Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者. 在本文中.Tero ...

  10. rnqoj-99-配置魔药-dp

    比较好的题目~~ dp[j][k]: 第一个容器在第i秒和第二个容器在第j秒,所产生的最大魔力. if(num[i].t2<=j)dp[j][k]=max(dp[j][k],dp[num[i]. ...