本周五做数学作业时,偶然看到一道题,便写了两段代码,为3.7的比赛热身。(事实证明,对于比赛而言没啥卵用)
题目:(八下北师大版伴你学P43.5)
依照题目打的代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x;
int sum=0;
cin>>x;
for(int i=0;i<1000000000;i++){
x=2*x-10;
sum++;
if(x>88){
cout<<sum;
break;
}
}
cout<<endl;
cout<<x;
return 0;
} 并以此为根据,写了下面这个直接算出得数的代码
#include<bits/stdc++.h>
using namespace std;
int cx(double x){
int sum=0;
for(int y=0;y<1000000000;y++){
x=2*x-10;
sum++;
if(x>88) return sum;
}
}
int main()
{
double a[1000]={0.0};
int su=0;
for(double i=0.0;;i+=0.5){
if(cx(i)==2){
a[su]=i;
su++;
}
if(cx(i)==1) break;
}
cout<<a[0]<<"-"<<a[su-1];
return 0;
}运行结果:
有0.5左右的误差
因为枚举时依次加了0.5,不然运行时间过长,毕竟已经172.7s了
至于优化方案。。。
To be continued...

京公网安备 11010502036488号