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