Fibonacci数列(高精度)

 

Description

相信大家都知道美国电影里的FBI,可是大家是否知道意大利数学家斐波那契提出的著名的FIB数列呢,
其定义如下:对于正整数数列A[n]有
          A[1]=1,A[2]=1,A[n]=A[n-1]+A[n-2],( n>2);
现在你的任务是求出Fibonacci数列的第n项。

Input

输入数据由多组数据组成。每组数据一行,仅一个整数,表示n的值。输入为0时结束输入。

Output

对于每组数据,输出仅一行,即Fibonacci数列的第n项。
我们保证输出的结果不会超过1000位数。

Sample Input

1
2
3
4
5
6
20
0

Sample Output

1
1
2
3
5
8
6765

 

代码

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
斐波那契数列是一个数列,其中每个数字都是前两个数字的和。通常,斐波那契数列的前两个数字是0和1。 如果要计算斐波那契数列中的第n个数字(n从0开始),可以使用高精度算法来处理,以避免溢出或精度丢失。以下是一个使用高精度算法计算斐波那契数列的示例代码: ```cpp #include <iostream> #include <vector> // 高精度加法 std::vector<int> add(const std::vector<int>& num1, const std::vector<int>& num2) { std::vector<int> result; int carry = 0; int i = num1.size() - 1; int j = num2.size() - 1; while (i >= 0 || j >= 0 || carry > 0) { int sum = carry; if (i >= 0) { sum += num1[i]; i--; } if (j >= 0) { sum += num2[j]; j--; } result.insert(result.begin(), sum % 10); carry = sum / 10; } return result; } // 计算斐波那契数列的第n个数字(高精度) std::vector<int> fibonacci(int n) { std::vector<int> fibPrev{0}; std::vector<int> fibCurr{1}; for (int i = 2; i <= n; i++) { std::vector<int> fibNext = add(fibPrev, fibCurr); fibPrev = fibCurr; fibCurr = fibNext; } return fibCurr; } int main() { int n = 100; // 计算斐波那契数列的第100个数字 std::vector<int> result = fibonacci(n); std::cout << "Fibonacci number at position " << n << ": "; for (int digit : result) { std::cout << digit; } std::cout << std::endl; return 0; } ``` 在上述示例中,我们定义了一个 `add` 函数来实现高精度的加法。然后,我们使用 `fibonacci` 函数来计算斐波那契数列的第n个数字。通过使用高精度的加法来计算每个数字,我们可以避免溢出或精度丢失。 请注意,随着n的增加,计算斐波那契数列高精度解决方案会变得更加耗时和占用内存。因此,在实际应用中,需要根据具体需求权衡使用高精度算法的必要性和性能要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值