题目链接
这个提示貌似没有什么用.
学过泰勒展开就会了.没学过可能不太行.
第一第二个操作就是\(LCT\)板子.
第三个就在\(LCT\)上改改就好了.
第四个好像很麻烦的样子.
首先,我们要知道它要求的是什么.
这个\(e^x\),\(sin(x)\)是什么玩意儿啊
好像不资瓷合并啊
但是我们发现,它不要求很高的精度.
而且下面给了一个提示.
因此学过泰勒展开的同学就知道该怎么做了.
具体而言,我们将其转化为一个多项式.
由于后面的项中,\(x\)的次数很高,系数很小,因此对答案没有什么影响.
如果我们要求\(10^{-7}\)的精度的话,大约只要记录\(13\)~\(14\)项.
如何转换成多项式呢?
先泰勒展开,然后再暴力二项式定理就好了.
其实这个公式我们学校在上\(FFT\)的时候讲过
\[ e^x=\sum_{i=0}^{\infty}\frac{x^i}{i!}\\ e^{ax+b}=\sum_{i=0}^{\infty}\frac{(ax+b)^i}{i!}\\ =\sum_{i=0}^{\infty}\frac{\sum_{j=0}^iC_i^ja^jb^{i-j}x^j}{i!}\\ \]
这两个公式应该还挺有名的.
\[ sin(x)=\sum_{i=0}^{\infty}(-1)^i\frac{x^{2i+1}}{(2i+1)!}\\ sin(ax+b)=\sum_{i=0}^{\infty}(-1)^i\frac{(ax+b)^{2i+1}}{(2i+1)!}\\ =\sum_{i=0}^{\infty}(-1)^i\frac{(ax+b)^{2i+1}}{(2i+1)!}\\ =\sum_{i=0}^{\infty}(-1)^i\frac{\sum_{j=0}^{2i+1}C_{2i+1}^ja^jb^{2i+1-j}x^j}{(2i+1)!} \]
这个和上面应该差不多.
不过求\(sin\)的时候注意要多算一点,避免炸精度.
代码如下
但是貌似不够清真
而且跑得超级慢
#include
#include
#include
#include
#include
#include
#include
#include