2117 : 我已经在路上了

时间限制:1 Sec 内存限制:256 MiB
提交:39 答案正确:8

提交 状态 编辑 讨论区

题目描述

spring是不折不扣的学霸,那可是机房考研中的头号选手,不吹不黑,spring出征,寸草不生

但是这个学霸从来不屑于写简单的东西,因为时间是可贵的,spring喜欢留给B站小姐姐。所以在计算数学求导的时候spring就想出来用编程来完成,这样岂不是美滋滋,正好符合spring高大上的气质

那么问题来了,基础的求导公式那么多,spring只是添加了少许几个原函数,分别为y=C,y=x,y=x^n,y=sinx,y=cosx,y=lnx,y=loga(x),y=e^x,,每次对一个原函数求导,但是学霸spring又觉得这样太简单,所以就决定可以在求导函数中加上常数(正整数,int范围),当然为了平衡难度,常数只能够在x前面,或者函数最前面这两个地方添加(如果两者为同一地点只能添加一次)。

输入

输入形式严格按照上面的函数形式,并且符合常规数学知识,其中C,n,a都是正整数的形式给出,均在int范围。

输出

输出按照样例实现,(拒绝杠精,不接受反驳)不用带有y'=,直接写出求导的结果,占一行。

样例输入

复制
y=sin5x
y=e^2x
y=2log13(8x)

样例输出

复制
5cos5x
2e^2x
2/ln13/x

注意:

      1、严格分类讨论,共八种情况;可以使用string的find()函数来找到每种情况的特殊字符段,该函数自行百度参数及使用方法。

      2、每种情况,注意拆分出常数项和x的系数项,用一个函数来实现这个反复的问题。

      3、每种情况,每个细节都要考虑到,常数项为“1”是否删去,x的系数项为“1”是否删除,理清思路后也就16种情况。具体自己列下来,整理清楚。

      4、特殊情况,y=x求导结果为1,y=1x^1等等18中特例!自行耐心构造!

      5、不全面的样例:

 y=sinx
y=sin200000x
y=100000sin200000x
y=2sinx y=cosx y=2000000cosx y=cos200000x
y=200000cos200000x y=lnx y=ln100000x y=1000000lnx y=100000ln100000x y=2log13(8x) y=200000log130000(10000x)
//特例需要约分,还需要注意系数a和n为1的地方
y=6ln6x y=ln6x
y=100000e^20000x y=10000000x y=1x y=x^ y=1x^ y=e^x y=10e^10x y=1x^1
y=123456789x^100000

建议AC后再看看题解:

    

 #include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#define ll long long
using namespace std;
#define N 100
ll get(char s[],ll beg){ //从下标beg的地方开始累乘出一个数值,不越界,找到不是数字的地方停下来
ll x=;
for(ll i=beg;i<(ll)strlen(s)&&s[i]>=''&&s[i]<='';i++){
x=x*+s[i]-'';
}
return x;
}
int main(){
char s[]; while(scanf("%*2s%s",s)!=EOF){ //在读取的时候跳过前两个字符(%*2c也阔以)
string st(s);
ll c,a,n,b; if(st.find("x^")!=-){ //cx^n求导-->(c*n)x^(n-1)
if(s[]>=''&&s[]<='')
c=get(s,);
else
c=;
ll x=st.find("^");
n=get(s,x+); if(c*n!=)printf("%lld",c*n);
cout<<"x";
if(n-==)printf("\n");
else printf("^%lld\n",n-);
} else if(st.find("sin")!=-){ //Csin(ax)求导
if(st[]>=''&&st[]<='')
c=get(s,);
else
c=;
ll x=st.find("n");
if(st[x+]=='x')
a=;
else
a=get(s,x+);
if(c*a!=)printf("%lld",c*a);
if(a==)
printf("%s%s\n","cos","x");
else
printf("%s%lld%s\n","cos",a,"x");
}
else if(st.find("cos")!=-){ //Ccos(ax)求导
if(st[]>=''&&st[]<='')
c=get(s,);
else
c=;
ll x=st.find("s");
if(st[x+]=='x')
a=;
else
a=get(s,x+); if(c*a==)
printf("-");
else
printf("-%lld",c*a);
if(a!=)
printf("%s%lld%s\n","sin",a,"x");
else
printf("%s\n","sinx"); }
else if(st.find("ln")!=-){ //cln(ax)求导 ==c/x
if(st[]>=''&&st[]<='')
c=get(s,);
else
c=;
ll x=st.find("n");
if(st[x+]=='x')
a=;
else
a=get(s,x+);
printf("%lld/",c); printf("x\n");
}
else if(st.find("log")!=-){ //nloga(bx)求导-->n/lna/x
if(st[]>=''&&st[]<='')
n=get(s,);
else
n=;
ll x=st.find("g");
a=get(s,x+);
x=st.find("(");
if(st[x+]=='x')
b=;
else
b=get(s,x+); printf("%lld/ln%lld/x\n",n,a);
}
else if(st.find("e^")!=-){ //y=ne^ax求导
if(st[]>=''&&st[]<='')
n=get(s,);
else
n=;
ll x=st.find("^");
if(st[x+]=='x')a=;
else
a=get(s,x+); if(a*n==)
printf("%s\n",s);
else{
printf("%llde^",a*n);
if(a==)
printf("x\n");
else
printf("%lldx\n",a);
}
}
else if(st.find("x")!=-){ //y=ax求导
if(st[]=='x')
printf("1\n");
else
printf("%lld\n",get(s,));
}
else
printf("0\n");
} return ;
}

(有注释,不懂留言即可)

zznu-oj-2117 : 我已经在路上了(求函数的原函数的字符串)--【暴力模拟题,花式模拟题,String大法好】的更多相关文章

  1. ZZNU - OJ - 2080 : A+B or A-B【暴力枚举】

    2080 : A+B or A-B(点击左侧标题进入zznu原题页面) 时间限制:1 Sec 内存限制:0 MiB提交:8 答案正确:3 提交 状态 讨论区 题目描述 Give you three s ...

  2. 做fzu oj 1045 做减法学到的sprintf()函数

    题目 做题一直输不出答案,于是就上网去百度了这题的解题,发现解答十分的简短,而且其中我看见了平时没见过的函数,sprintf(). 于是就百度sprintf()的使用. 如下: 函数功能:把格式化的数 ...

  3. poj 2117 Electricity【点双连通求删除点后最多的bcc数】

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4727   Accepted: 1561 Descr ...

  4. (haut oj 1261 ) 地狱飞龙 利用不定积分求值

    题目链接:http://218.28.220.249:50015/JudgeOnline/problem.php?id=1261 题目描述 最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心 ...

  5. Light OJ 1296:Again Stone Game(SG函数打表找规律)

    Alice and Bob are playing a stone game. Initially there are n piles of stones and each pile contains ...

  6. oj 1002题 (大数题)

    #include <stdio.h> #include <string.h> int main(void) { int q,j,h,k,l; int d; ],s2[];//题 ...

  7. 九度oj 1437 To Fill or Not to Fill 2012年浙江大学计算机及软件工程研究生机试真题

    题目1437:To Fill or Not to Fill 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1488 解决:345 题目描述: With highways availabl ...

  8. hdu 2117:Just a Numble(水题,模拟除法运算)

    Just a Numble Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  9. 九度OJ 1049:字符串去特定字符 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8499 解决:3860 题目描述: 输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果. 输入: 测试数据有多组,每组输入字符串s和 ...

随机推荐

  1. Hanoi II——汉诺塔步数求解进阶问题

    在NOJ上遇到关于汉诺塔步数的求解问题 开始读时一脸懵逼,甚至不知道输入的数据是什么意思 题目描述:给出汉诺塔的两个状态,从初始状态移动到目的状态所需要的最少步数 对于初级汉诺塔步数问题,我们可以直接 ...

  2. jira邮箱配置

    系统-邮件-外发邮件

  3. Vue 开发技巧或者说Vue知识点梳理(转,自个学习)

    Vue 组件通讯 ——常见使用场景可以分为三类: 父子通信: 父向子传递数据是通过 props,子向父是通过 events($emit):通过父链 / 子链也可以通信($parent / $child ...

  4. python 内置函数input/eval(22)

    python的内置函数其实挺多的,其中input和eval算得上比较特殊,input属于交互式内置函数,eval函数能直接执行字符串表达式并返回表达式的值. 一.input函数 input是Pytho ...

  5. python变量 - python基础入门(6)

    何为python变量,即数据类型.python变量一共六种类型:整数/浮点数/字符串/BOOL/列表/元组/字典,今天先讲解前四种,后三种留到后面的文章在讲解. 首先讲解print() 函数,prin ...

  6. Python中最常见的10个问题(列表)

    列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助. 1.迭代列表时如何访问列表下标索引 普通版: items = ...

  7. 关于NumPy中数组轴的理解

    参考原文链接(英文版):https://www.sharpsightlabs.com/blog/numpy-axes-explained/:中文版:https://www.jianshu.com/p/ ...

  8. SSM集成

    SSM集成   Spring和各个框架的整合   Spring目前是JavaWeb开发中最终的框架,提供一站式服务,可以其他各个框架整合集成   Spring整合方案   SSH Ssh是早期的一种整 ...

  9. asp.net core-8. 配置的热更新

    在asp.net core 发布了以后,在修改配置文件以后不需要重新发布,要实现只需要修改@inject IOptions<WebApplication1.Class> ClassAcce ...

  10. BZOJ3998 TJOI2015弦论(后缀自动机)

    先考虑相同子串视为一个.按SAM的拓扑序预处理出从每个节点开始能得到多少个本质不同子串(注意虽然一个节点对应多个子串,但到达该点时当前的子串显然是确定为其中一个的),然后按位贪心即可. 相同子串视为多 ...