末三位整数

本文介绍了如何解决编程挑战中关于求(3 + √5)^n小数点前三位的整数部分的问题。通过将问题与斐波那契数列联系起来,找到递推公式,然后利用数列的周期性,有效计算出末三位数值。这种方法避免了直接计算带来的精度和效率问题。
摘要由CSDN通过智能技术生成

    这是编程挑战-高校俱乐部的题目。求(3 + √5)^n的小数点前(整数部分)的最低3位。 例如:(3 + √5)^5 = 3935.73982…则输出935 而(3 + √5)^2 = 27.4164079.. 则输出027。 输入格式: 多组数据,每组一行包含一个正整数n, 2<=n<=2000000000。 输出格式: 每组数据输出一行,恰好包含3个数字。 

    看到这个题,感觉就是完全不是考验编程能力,而是更多考验数学能力。很明显,要是一个没有学过高等数学的人,基本不太可能解决这个问题(当然了,学了也解决不了的人也存在)。看这个题,输入变量n的变化范围很大,显然,这个题是有简便的解法的。

    笨办法是把这个数求出来,不过显然有难度。先不说这个复杂度,就是n大到一定程度的时候,计算机就不好表示这个数了,而且由于误差的存在,结果很有可能是错的。所以要换个思路。

    我看到这个题,想到的是菲波那契数列。为什么呢?因为如果a0=a1=1,那么n>1,an=((1+√5)/2)^n+(1-√5)/2)^n。an其实是个整数,但是却可以用两个无理数来表示。那这里是不是也有用呢。刚好,3 -√5是个小于1的

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值