2024河南商丘ICPC Problem B. 表达式求导

题目描述

给定一个合法的函数表达式f(x),请你求出y=f(x)在a处的导数值,输入保证此处导数值一定存在,答案四舍五入保留两位小数。

该函数表达式被称为合法,即满足以下要求:

  1. x一定合法。

  2. 如果表达式A合法,表达式BBB合法,那么A+B,A−B一定合法。

  3. 如果表达式A合法,那么ln(A)ln(A)ln(A)也合法。

输入描述

本题有多组数据。

第一行输入整数T(1≤T≤30)T(1 \le T \le 30)T(1≤T≤30),表示数据组数。

接下来每组数据包含两行。

其中第一行输入一个字符串S,表示f(x)f(x)f(x)的函数表达式,1≤∣S∣≤20。

其中第二行输入一个至多两位小数的浮点数a(0≤a≤20),含义如上所示。

输出描述

输出一个浮点数,表示y=f(x)在a处的导数值,答案四舍五入保留两位小数。

示例1

|-----------------------|------|
| 输入 | 输出 |
| 1 ln(x)+x 0.5 | 3.00 |

思路

用定义求导 [f(x+Δx)-f(x)]/Δx,给Δx个很小的值就可以

python秒了

代码

python 复制代码
import re
import math

def rep_x(str):
    pattern = r'(\d)([a-zA-Z])'
    res = re.sub(pattern, r'\1*\2', str)
    return res

def ln(x):
    return math.log(x)

def cos(x):
    return math.cos(x)

def sin(x):
    return math.sin(x)

def solve():
    a=rep_x(input().replace('^','**'))
    x=float(input())
    dt = 0.0000000001

    res1 = eval(a)
    x += dt
    res2 = eval(a)

    res = (res2-res1)/dt

    print("%.2f"%(res))

t=int(input())
for i in range(t):
    solve()
相关推荐
一个不知名程序员www1 小时前
算法学习入门---二分查找(C++)
c++·算法
2301_807997381 小时前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法1 小时前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
TL滕1 小时前
从0开始学算法——第一天(认识算法)
数据结构·笔记·学习·算法
小欣加油1 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
love is sour2 小时前
聚类(Clustering)详解:让机器自己发现数据结构
算法·支持向量机·聚类
烟袅2 小时前
LeetCode 142:环形链表 II —— 快慢指针定位环的起点(JavaScript)
前端·javascript·算法
CoovallyAIHub2 小时前
OCR战场再起风云:LightOnOCR-1B凭什么比DeepSeekOCR快1.7倍?(附演示开源地址)
深度学习·算法·计算机视觉
海琴烟Sunshine3 小时前
leetcode 190. 颠倒二进制位 python
python·算法·leetcode
Xの哲學3 小时前
Linux eMMC子系统深度解析:从硬件协议到内核实现
linux·网络·算法·架构·边缘计算