第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)G Fibonacci

题目

In mathematics, the Fibonacci numbers, commonly denoted as f_nf
n

, is a sequence such that each number is the sum of the two preceding numbers, starting with 1 {1} 1 and 1 {1} 1. That is, f 1 = 1 , f 2 = 1 f_1=1,f_2 =1 f1=1,f2=1 and f n = f n − 2 + f n − 1   ( n ≥ 3 ) f_n = f_{n-2} + f_{n-1}~(n \ge 3) fn=fn2+fn1 (n3)Thus, the beginning of the sequence is 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , … 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , … . 1, 1, 2, 3, 5, 8, 13, 21,\ldots1,1,2,3,5,8,13,21,… . 1,1,2,3,5,8,13,21,1,1,2,3,5,8,13,21,.

在这里插入图片描述
在这里插入图片描述

题意

给出一个函数 g ( f i , f j ) g(f_i,f_j) g(fi,fj) 定义为斐波那契数列的第i项和第j项相乘为偶数函数值为1 否则函数值为0,给定一个n,求i从1到n,j从i+1到n所有的 g ( f i , f j ) g(f_i,f_j) g(fi,fj)累加和

思路

根据斐波那契 奇奇偶 奇奇偶 … 的规律 先算出来偶数的数量 e v e n = n / 3 even = n/3 even=n/3 统计时推出公式为 a n s = ( e v e n ∗ e v e n − e v e n ) / 2 + ( n − e v e n ) ∗ e v e n ; ans = (even * even - even) / 2 + (n - even) * even; ans=(eveneveneven)/2+(neven)even; 别忘记开long long即可。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll n;
    scanf("%lld", &n);
    ll even = n/3; // 偶数的个数 
    ll ans = (even * even - even) / 2 + (n - even) * even; // 推出的公式 
    cout << ans << "\n";
}

/*
1 1 2 3 5 8 13 21 34
1 1 2 1 1 2 1 1 2 
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值