MCXCC @ 2024-02-09 12:00:25
#include "stdio.h"
#include "math.h"
int main() {
int k;
scanf("%d", &k);
printf("%d",(int )(floor(exp(k)-0.5)));
return 0;
}
想起来高数上讲过调和级数求和的近似值,γ大概是0.5的样子吧,然后全红(逃
公式贴一个在这里
虽然最后解出来了但是还是想知道这个思路可行否
by luogu_gza @ 2024-02-09 12:08:28
@MCXCC 在较小的 k 时误差较大。
by huangruiheng0217 @ 2024-02-09 12:09:06
试了一下,取更精确的 e 可以得 40-60 分
by huangruiheng0217 @ 2024-02-09 12:10:43
@MCXCC 下面这个代码奇奇怪怪过了。。
#include<bits/stdc++.h>
using namespace std;
int main() {
double k;
cin>>k;
k-=0.577215664901;
double ans=exp(k)-1;
cout<<ceil(ans+0.577215664901)<<endl;
return 0;
}
by MCXCC @ 2024-02-09 13:23:11
@huangruiheng0217 刚看了一下,应该是
但不清楚为什么精度这么高
by MCXCC @ 2024-02-09 13:30:45
@huangruiheng0217 破案了,这两个函数一开始误差大,后面小
结果误差大的地方刚好都取在小数部分,完美地避开了整数点,抽象
by huangruiheng0217 @ 2024-02-09 13:57:04
@MCXCC 哦 但是这个题暴力也很优秀。。。