Problem Description:

瓜瓜在玩着由红色和蓝色的大理石做成的玻璃珠,他将n个玻璃珠从左到右排成一个序列叫做无聊者序列。一个非空的红色和蓝色玻璃珠组成的序列是一个无聊者序列。这个序列的玻璃珠颜色是交替的,例如:序列(红色;蓝色;红色)和(蓝色)是一个无聊者序列。(红色;红色)不是无聊者序列。现在,瓜瓜想知道,从这个序列中选出一个无聊者子序列有多少种方法。并将它mod(1000000007)。

Input:

输入有多组数据,输入一个整数n(1 <= n <= 10^6),代表这个无聊者序列的个数。

Output:

输出一个数,代表子序列的个数为多少,该数需要mod(1000000007)

Sample Input:

3
4

Sample Output:

6
11
Hint:
对于第一个样例,假如我们猜测瓜瓜初始排列的玻璃珠序列为(红色;蓝色;红色),那么无聊者序列的子序列将会是以下6个:



红蓝
蓝红
红蓝红
解题思路:规律题。简单推导一下前5个玻璃珠构成地无聊者序列:记红色为0,蓝色为1;规则:序列颜色是交替的。
当n=1时,假设序列是0(当然也可以是1,但只要其中的一种情况就可以了),所以子序列为0--->1个;
当n=2时,假设序列是01(当然也可以是10),此时的子序列为0、1、01--->3个;(1+)
当n=3时,假设序列是010(当然也可以是101),此时的子序列为0、1、0、01、10、010--->6个;(3+)
当n=4时,假设序列是0101(当然也可以是1010),此时的子序列为0、1、0、1、01、01、10、01、010、101、0101--->11个;(6+)
当n=5时,假设序列是01010(当然也可以是10101),此时的子序列为0、1、0、1、0、01、01、10、10、01、10、010、010、010、101、010、0101、1010、01010--->19个;(11+)
以上求子序列要按照无聊者序列规则来从左到右推导,通过观察结果个数之间的关系,可以发现后一个数减去前一个数的结果刚好为斐波那契数列规律,于是果断打表,但打表过程可能出现数据过大,此时的取余应为同余思想,剩下就简单了,水过。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
const int maxn = ;
const int mod = ;
typedef long long LL;
LL a[maxn],b[maxn];
int main(){
a[]=a[]=b[]=;
for(int i=;i<maxn;++i)
a[i]=(a[i-]%mod+a[i-]%mod)%mod;//同余
for(int i=;i<maxn;++i)
b[i]=(b[i-]+a[i])%mod;
int n;
while(cin>>n){
cout<<b[n]<<endl;
}
return ;
}

ACM_无聊者序列(斐波那契数列大数取余(同余)+规律)的更多相关文章

  1. 2018年东北农业大学春季校赛 K wyh的数列【数论/斐波那契数列大数取模/循环节】

    链接:https://www.nowcoder.com/acm/contest/93/K来源:牛客网 题目描述 wyh学长特别喜欢斐波那契数列,F(0)=0,F(1)=1,F(n)=F(n-1)+F( ...

  2. SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1

    5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...

  3. 洛谷P1720 月落乌啼算钱 题解 斐波那契数列/特征方程求解

    题目链接:https://www.luogu.com.cn/problem/P1720 题目描述: 给你一个公式 ,求对应的 \(F_n\) . 解题思路: 首先不难想象这是一个斐波那契数列,我们可以 ...

  4. 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解

    题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...

  5. [51nod1236] 序列求和 V3(斐波那契数列)

    题面 传送门 题解 把求和的柿子用斐波那契数列的通项公式展开 \[ \begin{aligned} Ans &=\sum\limits_{i = 1}^{n} \left(\frac{(\fr ...

  6. 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)

    对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...

  7. hdu-5686 Problem B(斐波那契数列)

    题目链接: Problem B Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

  8. 斐波那契数列 51nod

    1242 斐波那契数列的第N项 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 斐波那契数列的定义如下:   F(0) = 0 F(1) = 1 F(n) ...

  9. HDU3977(斐波那契数列模n的循环节长度)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...

随机推荐

  1. BZOJ 1370 团伙

    两个认识的人不是朋友就是敌人,且满足: 1,朋友的朋友是朋友: 2,敌人的敌人是朋友. 一群朋友组成一个团伙,给出m个信息,求有多少个团伙. 用并查集,把一个点x拆成x和x’ 若a与b为朋友,则将a与 ...

  2. Java基础学习总结(81)——如何尽可能的减少Java代码中bug

    Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能. 不过在编写代码时,bug永远是困扰每一位从业者的头号难题.在今天的文章中, ...

  3. [luoguP1196] 银河英雄传说(并查集)

    传送门 记录 up[x] 表示 x 上方有多少个 all[x] 表示当前连通的有多少个 find 的时候 和 合并的时候 更新一下即可 ——代码 #include <cstdio> #in ...

  4. [luoguP2038] 无线网络发射器选址(模拟)

    传送门 又是个模拟水题,考虑边界就好,连long long都不用开. ——代码 #include <cstdio> #include <iostream> int n, d, ...

  5. noip模拟赛 立方数2

    题目描述LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数.LYK还定义了一个数叫“立方差数”,若一个数可以被写作是两个立 ...

  6. POJ——T3417 Network

    http://poj.org/problem?id=3417 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5294   A ...

  7. pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等

    pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...

  8. sizeThatFits and sizeToFit

    http://liuxing8807.blog.163.com/blog/static/9703530520134381526554/ sizeThatFits and sizeToFit是UIVie ...

  9. JAVA 并发编程-线程池(七)

    线程池的作用: 线程池作用就是限制系统中运行线程的数量. 依据系统的环境情况.能够自己主动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其 ...

  10. [JavaEE] Injecting Bean

    So what is a Bean, in JavaEE, any class expect Entity are Bean. One usefully thing in Bean is Depend ...