hang-li 2022-10-12 18:16 采纳率: 66.7%
浏览 16
已结题

斐波那契数列求和,可能是取模取不对

斐波那契数列,F1=F2=1,从第三项开始,每项等于前两项之和。约定S1=1,Sn<=Fn+1时,Sn+1=Sn+Fn+1,否则Sn+1=Sn-Fn+1。p=1000000007,因为结果可能很大,将计算过程中所有Fn和Sn取模。输入n,输出Sn。
计算规则例如:S6=1+1+2-3+5+8=14。

#include
using namespace std;
int main()
{
long int n;
long int p = 1000000007;
long int count;
long int a = 1;
long int b = 1;
long int sum = 1;
cin >> n;
for (count = 2; count <= n; count++) {
if (sum % p <= b % p) {
sum = sum + b;
} else if (sum % p > b % p) {
sum = sum - b;
}
b = b + a;
a = b - a;
}
cout << sum;
return 0;
}
不知道为什么总是不对,个人认为可能是取模的问题,求指点!🥺🥺

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-10-12 18:21
    关注
    
    #include <iostream>
    using namespace std;
     
    int main()
    {
        long long a[50],s=0;
        int i, n;
        cin >> n;
        a[1] = 1;
        a[2] = 1;
        if (n == 1)
        {
            cout << "1" << endl;
        }
        else if (n == 2)
        {
            cout << "2" << endl;
        }
        else
        {
            for (i = 3; i <= n; i++)
            {
                a[i] = a[i - 1] + a[i - 2];
                s += a[i];
            }
            cout << s+2 << endl;
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)