斐波那契数列,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;
}
不知道为什么总是不对,个人认为可能是取模的问题,求指点!🥺🥺