本周五做数学作业时,偶然看到一道题,便写了两段代码,为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...