黄金分割数保留小数点后100位问题
黄金分割数可以通过一个等式来近似表示:
层数越深则越接近黄金分割数
现要求保留黄金分割数后100位小数!第100位四舍五入,是0也要保留!
层数越深则越接近黄金分割数
现要求保留黄金分割数后100位小数!第100位四舍五入,是0也要保留!
算法分析
分子分母分别满足斐波拉切级数。
小数计算方法——模拟人工笔算过程。
程序实现
#include<iostream>
#include<iomanip>
using namespace std;
int n1=1, n2=2;
void fabo(int n){
int t;
if(n==33)
return;
t=n1;
n1=n2;
n2=t+n1;
fabo(n+1);
}
void cacul(int a[]){
int n;
int n11=n1*10, n22=n2;
for(int i=0; i<101; i++){
n=n11/n22;
n11=(n11%n22)*10;
if(i!=100)
a[i]=n;
else{
if(n>=5)
a[i-1]+=1;
}
}
}
void Display(int a[]){
cout<<"0.";
for(int i=0; i<100; i++){
if(i%10==0)
cout<<endl;
cout<<a[i];
}
cout<<endl;
}
int main(void){
int a[100]={0};
fabo(1);
cout<<n1<<" "<<n2<<endl;
cacul(a);
Display(a);
system("pause");
return 0;
}
运行结果
总结:可惜考场上没有做出来!