早教吧作业答案频道 -->其他-->
怎么求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...的网友还看了以下:
第二次 makefile 提示 make:`myapp' is up to date,myapp 2020-05-16 …
在“O”里填上合适的字,使它与吓面的字组成成语,并使横向算式成立.O*O-O*O+O*O=34死面 2020-06-23 …
读不同纬度各月昼长时间分布图,完成45-46题.①②③④四条折线对应的纬度分别是()A.66°34 2020-06-27 …
人类的血型一般可分为A,B,AB,O型四种,宁波市中心血战2015年共有8万人无偿献血,血战统计人 2020-07-08 …
一个关于C语言的简单选择题207.下面四个选项中,全是不合法的整型常量的选项是A)--0f1-0x 2020-07-18 …
如图,AB与O相切于点A,BO与O相交于点C,点D是优弧AC上一点,∠CDA=27°,则∠B的大小 2020-07-31 …
-(34-27)的相反数是()A.(34+27)B.-34-27C.34-27D.27-34 2020-07-31 …
函数f(x)在[0,+∞)上是减函数,那么下述式子中正确的是()A.f(34)≤f(a2-a+1) 2020-08-01 …
2007年1月1日从北京天安门地区管理委员会获悉,自1991年以来近16年里,大约有1.34亿人次在 2020-12-05 …
在公式中=ROUND($N$19/$L$19*L8,2)和=$O$34/$K$34*K16是什么意思 2021-02-05 …