【NOIP模拟】求导
2016-09-29 17:25
351 查看
Description
Solution
看到这个简单的求导,哇!感觉好水啊!对于那些不会求导的人来说,那简直就是不可做。然后下面尽然给了求导公式。
哎,不就是模拟吗……
这个分类讨论,简直是烦死人!!!!
我原以为指数是从小到大的,然后不是,结果GG了。
我认为比较简单的处理方法就是,把所有的数字符号,先从字符串提取出来,然后再处理会比较方便。
Code
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; long long i,j,k,l,t,n,m,ans,zhi,f,tt,ff,jia,op; char s[100000]; long long sum[1010][2],fu[1001]; bool az,bz; int main(){ freopen("equation.in","r",stdin); freopen("equation.out","w",stdout); scanf("%s",s+1); n=strlen(s+1); s[++n]='+'; f=1;fo(i,1,1000)fu[i]=1;op=1; fo(i,1,n){ if(!az&&s[i]>='0'&&s[i]<='9')t=t*10+s[i]-'0'; else if(s[i]=='+'||(s[i]=='-'&&bz)){ if(bz)t=max(t,(long long)1),tt=max(tt,(long long)1); op++; sum[op][0]=t;sum[op][1]=tt;//if(s[i]=='-')fu[op]=-1; fu[op]=f; t=0; tt=0,az=bz=0; if(s[i]=='+')f=1;else f=-1; } else if(s[i]=='^')az=1; else if(az){ tt=tt*10+s[i]-'0'; } else if(s[i]=='x'){bz=1;if(!t)t=1;} else if(s[i]=='-')f=-1; } if(s[1]=='-')fu[1]=-1; fo(i,2,op){ if(sum[i][1]){ if(ans){if(i!=1)if(fu[i]==1)putchar('+');} printf("%lld",fu[i]*sum[i][0]*sum[i][1]); if(sum[i][1]>1)putchar('x'); if(sum[i][1]>2)printf("^%lld",sum[i][1]-1); ans++; } } if(!ans)printf("0"); }
相关文章推荐
- Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
- 元素的显示与隐藏
- 2016.09.29 queue.c
- C++基础复习心得 7
- docker centos rpm离线安装1.8.2及pull的正确姿势
- 集合练习
- struts2文件上传下载(含中文编码问题)
- java多线程知识汇总(三)如何选择锁?如何加锁
- MD5 加密 java代码实现
- 第三方短信平台——SUBMAIL 配置 DNS 解析
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 为什么使用where 1=1
- Python 判断两个或多个条件not in和in
- Linux学习笔记 --- Linux 下 yum源配置文件 repo 文件学习
- centos 上 Jenkins安装
- linux开启ftp服务(vsftpd软件的安装及配置)
- sklearn 谱聚类与文本挖掘初步(一)
- Android中代码混淆之proguard
- Makefile
- C#资源文件和C#枚举如何结合使用?