Fibonacci
题意:
f[i]表示第i位的斐波那契数列
给定n,求
题解:
这种题一开始没什么思路,那么枚举就行
g(x,y) = 1 是当x * y为偶数时
x * y为偶数说明:
x是偶数,y也是偶数
x是奇数,y是偶数
而奇 * 奇 = 奇
根据斐波那契数列,1,1,2,3,5,8,13,21,34
我发现第3位,第6位,第9位都是偶数,其他都是奇数,也就是3的倍数位都是偶数,这样我们就可以求出一个区间内斐波那契数列有几个偶数,因为奇 * 奇 = 奇是不能累加的,我们设偶数数列为ans,ans=n/3
我们在n个数中任取两个,是总情况,奇数个数(n-ans)中任取两个是不满足情况的时候,前者减去后者就是答案
代码:
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
int main()
{ll n;cin>>n;ll sum=0;ll ans=n/3;sum=(n*(n-1))/2-((n-ans)*(n-ans-1))/2;cout<<sum;return 0;
}