黄金分割数保留小数点后100位问题
昨天刚刚参加了“蓝桥杯”C/C++的预赛,里面有一题是:求解黄金分割数保留小数点后100位。
层数越深则越接近黄金分割数
现要求保留黄金分割数后100位小数!第100位四舍五入,是0也要保留!
问题是如何去求解出那么多的小数?解决问题关键肯定不在于采用何种数据类型,应该采用什么样的算法思想?
求指导! 蓝桥杯,算法
[解决办法]
黄金分割比是0.618
你这个式子第一层的那个“1+”应该是不用的
第一层“1+”去掉之后,这式子简化一下,其实分子跟分母就是,一组斐波那契数列
n=1时 是1/2
n=2时 是2/3
n=3时 是3/5
n=4时 是5/8
n=5时 是8/13
至于算小数点后100位,你模拟手算除法就可以了,每次除出来的那一位商就是小数点后第i位,余数做下一次的被除数
比如
8/13,商0,余8,补0变成80
80/13,商6(即第一位小数),余2,补0变成20
20/13,商1(即第二位小数),余7,补0变成70
70/13,商5(即第三位小数),余5,……