社区讨论
萌新刚学三分求调
P3382三分参与者 4已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo26uzcu
- 此快照首次捕获于
- 2023/10/23 08:57 2 年前
- 此快照最后确认于
- 2023/11/03 09:13 2 年前
感觉是精度的问题
我把
CPPprintf换成cout<<setprecision(5)反而掉了20tps#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
const double eps=1e-9;
const int N=15;
double a[N];
int n;
double f(double x){
double res=0;
double tot=1;
for(int i=n;i>=1;--i){
tot*=x;
res+=tot*a[i];
}
return res;
}
int main(){
cin>>n;
double l,r;cin>>l>>r;
for(int i=1;i<=n;++i) cin>>a[i];
while(1.0*(l+eps)<1.0*r){
// cout<<l<<" "<<r<<'\n';
double midl=l+(r-l)/3,midr=r-(r-l)/3;
double fl=f(l),fr=f(r);
if(fl>fr) r=midr;
else l=midl;
}
printf("%.5f",l);
}
50tps
CPP#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
const double eps=1e-9;
const int N=15;
double a[N];
int n;
double f(double x){
double res=0;
double tot=1;
for(int i=n;i>=1;--i){
tot*=x;
res+=tot*a[i];
}
return res;
}
int main(){
cin>>n;
double l,r;cin>>l>>r;
for(int i=1;i<=n;++i) cin>>a[i];
while(1.0*(l+eps)<1.0*r){
// cout<<l<<" "<<r<<'\n';
double midl=l+(r-l)/3,midr=r-(r-l)/3;
double fl=f(l),fr=f(r);
if(fl>fr) r=midr;
else l=midl;
}
cout<<setprecision(5)<<l;
}
30tps
回复
共 10 条回复,欢迎继续交流。
正在加载回复...