可知x·y为偶数,那么x和y的组成要么是一奇一偶要么是两个偶数,所以通过观察Fibonacci数列可以得到,每三个作为一个循环,每个循环前两个为奇数,第三个为偶数,因此偶数的个数就是
,奇数的个数就是
,因此奇数和偶数互相匹配的个数就是
,偶数匹配偶数可以得到一个等差数列,根据等差数列求和公式得到
AC代码:
#include #define rep(i,a,n) for(int i=a;i using namespace std; using LL = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; int cnt = n / 3; LL ans = 1ll * cnt * (n - cnt) + 1ll * (cnt - 1) * cnt / 2; cout << ans << '\n'; return 0; }