Fibonacci数列 1 1 2 3 5 8 13 21 34 可以发现Fibonacci数列是 奇奇偶 奇奇偶 奇奇偶 每三个数中有一个偶数,所以偶数的个数为k = n / 3 奇数的个数为 s = n - k 例: 1 1 2 3 5 8 13 21 34 每一个数与其后面的数相乘为偶数的个数 3 3 6 2 2 3 1 1 0 因此 奇数与后面的偶数相乘所得结果才是偶数,而且是依次减1 所以我们可以得出 前为奇数、后为偶数相乘为偶数的个数为首项为1,最后一项为k,等差为1的等差数列 即:k*(k+1)/2 因为每三个数中有两个奇数,故乘2 即:k*(k+1) 前为偶数和后面的数(奇数或偶数)相乘为偶数 第一个偶数有n − 3 个 第二个有n−3∗2个组合 第三个有n−3∗3个组合 .... 直到最后一个有n−3∗k个组合 等差数列求和:(k*(2*n-3*(k+1)))/2 最终结果: 两个结果相加即可 即:k*(k+1)+(k*(2*n-3*(k+1)))/2代码
#include#include #include using namespace std; int main() { long long n,k,s,s1,s2; scanf("%lld",&n); k=n/3; s=n-k; s1=k*(k+1); s2= (k*(2*n-3*(k+1)))/2; printf("%lldn",s1+s2); return 0; }



