2301_79954677 2023-10-22 15:26 采纳率: 100%
浏览 20
已结题

实验4_8_斐波那契数列

实验4_8_斐波那契数列
斐波那契数列(Fibonacci sequence)又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。它指的是这样一个数列 1,1,2,3,5,8,13, 21,34, 55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……..这个数列从第3项开始,每一项都等于前两项之和。
现请你写一个程序计算这个数列的第n项值除以101的余数。

输入格式:
只有一行,为一个正整数n(3<=n<=100000000)。

输出格式:
也只有一行,为一个正整数,代表斐波那契数列第n项的值除以101的余数。

我的代码:

#include <stdio.h>
int main()
{
    long n,i,a=1,b=1;  //a为X(n-2),b为X(n-1)
    long long x;
    scanf("%ld",&n);
    for(i=3;i<=n;i++)
    {
        x=a+b;
        a=b;
        b=x;
}
    printf("%d\n",x%101);
    return 0;
}

出现的问题:当n较小时,程序正常进行,当n较大时,出现错误
希望大家帮忙看看如何解惑,谢谢了

  • 写回答

3条回答 默认 最新

  • micthis 2023-10-22 15:44
    关注

    将x=(a+b);改成x=(a+b)%101;
    将%ld改成%lld
    修改部分:

    #include <stdio.h>
    int main()
    {
        long long n,i,a=1,b=1,x=1;
        scanf("%lld",&n);
        for(i=3;i<=n;i++)
        {
            x=(a+b)%101;
            a=b;
            b=x;
        }
        printf("%lld\n",x%101);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关