为什么这种做法需要特判0?
查看原帖
为什么这种做法需要特判0?
940678
lhrfc楼主2023/6/8 17:55

rt,近似于梯形面积求积分,甚至比辛普森积分还要快一点,但是如果不特判a=0,就会一直90WA。

但是为什么写辛普森积分的就不用特判a=0呢?

代码:

#include <bits/stdc++.h>
using namespace std;
const double eps=1e-5;//调到1e-2都能90
double a;
double Pow(double a,double b){
    if(!a&&!b) return 1;
    return pow(a,b);
}
double f(double  x){
    return Pow(x,a/x-x);
}
double jifen(double l,double r){
    if(r-l<eps) return (f(r)+f(l))*(r-l)/2;
    double mid=(l+r)/2;
    return jifen(l,mid)+jifen(mid,r);
}
int main(){
    cin>>a;
    if(a<0) puts("orz");
    //else if(!a) cout<<1.99546; 特判a=0
    else printf("%.5lf",jifen(0,15));
}
2023/6/8 17:55
加载中...