题意:
给定n,要求计算:
∑
i
=
1
n
∑
j
=
i
+
1
n
g
(
f
i
,
f
j
)
\sum_{i=1}^n\sum_{j=i+1}^ng(f_{i},f_{j})
∑i=1n∑j=i+1ng(fi,fj)
g ( x , y ) = [ x ∗ y % 2 = = 0 ] g(x,y)=[x*y\%2==0] g(x,y)=[x∗y%2==0]
f i 为 斐 波 那 契 数 列 的 第 i 项 f_{i}为斐波那契数列的第i项 fi为斐波那契数列的第i项
数据范围:n<=1e9
解法:
将问题变为有多少个无序数对(fi,fj),
满足fi*fj是偶数.
观察斐波那契数列:1,1,2,3,5,8,13,21....
发现每三个数中就有一个是偶数.
计算出奇数和偶数的数量,然后算一下合法匹配数就行了.
code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n;cin>>n;
int even=n/3;
int odd=n-even;
int ans=0;
ans+=even*(even-1)/2;
ans+=even*odd;
cout<<ans<<endl;
return 0;
}