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()
相关推荐
草履虫建模4 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq6 小时前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq7 小时前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
爱吃rabbit的mq7 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
(❁´◡`❁)Jimmy(❁´◡`❁)8 小时前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi8 小时前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
不能隔夜的咖喱9 小时前
牛客网刷题(2)
java·开发语言·算法
VT.馒头9 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
进击的小头9 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
咖丨喱11 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法