早教吧作业答案频道 -->其他-->
怎么求Fibonacci数第n位的位数?编程ACM高精度低精度的就不要了;ProblemdescriptionFibonacci数{0,1,1,2,3,5,8,13,21,34,55,...}的定义如下:F0=0F1=1Fi=Fi-1+Fi-2当i≥2当i相当大时,Fi也很大.现在不要求你求
题目详情
怎么求 Fibonacci 数第n位的位数?编程ACM 高精度
低精度的就不要了;
Problem description
Fibonacci数{0,1,1,2,3,5,8,13,21,34,55,...}的定义如下:
F0= 0
F1= 1
Fi= Fi-1+ Fi-2当i ≥ 2
当i相当大时,Fi也很大.现在不要求你求出Fi的值,只需要求出Fi的(十进制)位数.
Input
输入有多个正整数,每个整数一行,表示Fibonacci数的序号i(0 < i≤2^20).
最后是一个0,表示输入结束且不需处理.
Output
对于输入的每个i,输出Fi的位数.
Sample Input
1
100
0
Sample Output
1
21
注意 i 的取值挺大的!
下面我的代码:采用取对通项对数,但是wrong answer
求正确代码!
#include
#include
using namespace std;
int main()
{
double i,m,n,ans;
while(cin>>i&&i)
{
m=(1+sqrt(5))/2;
n=(1-sqrt(5))/2;
ans=log10( ( pow(m,i)-pow(n,i) )/sqrt(5) );
cout
低精度的就不要了;
Problem description
Fibonacci数{0,1,1,2,3,5,8,13,21,34,55,...}的定义如下:
F0= 0
F1= 1
Fi= Fi-1+ Fi-2当i ≥ 2
当i相当大时,Fi也很大.现在不要求你求出Fi的值,只需要求出Fi的(十进制)位数.
Input
输入有多个正整数,每个整数一行,表示Fibonacci数的序号i(0 < i≤2^20).
最后是一个0,表示输入结束且不需处理.
Output
对于输入的每个i,输出Fi的位数.
Sample Input
1
100
0
Sample Output
1
21
注意 i 的取值挺大的!
下面我的代码:采用取对通项对数,但是wrong answer
求正确代码!
#include
#include
using namespace std;
int main()
{
double i,m,n,ans;
while(cin>>i&&i)
{
m=(1+sqrt(5))/2;
n=(1-sqrt(5))/2;
ans=log10( ( pow(m,i)-pow(n,i) )/sqrt(5) );
cout
▼优质解答
答案和解析
矩阵快速幂.这里矩阵算法不是乘法了 是求10的对数 然后相加.
看了怎么求Fibonacci数第n...的网友还看了以下:
如图1,在△ABC中,∠ACB=90°,点P为△ABC内一点.(1)连接PB,PC,将△BCP沿射 2020-04-07 …
已知火车站托运行李的费用C和托运行李的重量P(千克)(P为整数)的对应关系如下表,则C与P的对应关 2020-04-07 …
在直角三角形中,求证:r+ra+rb+rc=2p.式中r,ra,rb,rc分别表示内切圆半径及与a 2020-05-13 …
在平面直角坐标系xOy中,已知曲线C:y=12x2,则过点P(1,0)且与曲线C相切的直线方程为. 2020-05-15 …
(2011•通州区一模)已知椭圆C:x2a2+y2b2=1(a>b>0)的离心率为e=12,右焦点 2020-05-15 …
已知:如图,直线y=x-1交x轴、y轴于点A、B.直线y=-0.5x+2交x轴、y轴于点C、D,两 2020-05-23 …
已知圆心C在x轴上的圆过点A(2,2)和B(4,0).(1)求圆C的方程;(2)求过点M(4,6) 2020-06-09 …
设半径长为5的圆C满足条件:(1)截y轴所得弦长为6;(2)圆心在第一象限.并且到直线l:x+2y 2020-06-18 …
①若集合P={正方形},Q={菱形},那么是P是C的真子集,还是C是P的真子集,若C={矩形}呢, 2020-06-21 …
已知圆C的方程为:x^2+y^2=4(1)求过点P(1,2),且与圆C相切的直线l的方程(2)直线 2020-06-30 …