當(dāng)前位置:
首頁 >
ACM_无聊者序列(斐波那契数列大数取余(同余)+规律)
發(fā)布時(shí)間:2025/7/25
57
豆豆
生活随笔
收集整理的這篇文章主要介紹了
ACM_无聊者序列(斐波那契数列大数取余(同余)+规律)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Problem Description:
瓜瓜在玩著由紅色和藍(lán)色的大理石做成的玻璃珠,他將n個(gè)玻璃珠從左到右排成一個(gè)序列叫做無聊者序列。一個(gè)非空的紅色和藍(lán)色玻璃珠組成的序列是一個(gè)無聊者序列。這個(gè)序列的玻璃珠顏色是交替的,例如:序列(紅色;藍(lán)色;紅色)和(藍(lán)色)是一個(gè)無聊者序列。(紅色;紅色)不是無聊者序列。現(xiàn)在,瓜瓜想知道,從這個(gè)序列中選出一個(gè)無聊者子序列有多少種方法。并將它mod(1000000007)。Input:
輸入有多組數(shù)據(jù),輸入一個(gè)整數(shù)n(1 <= n <= 10^6),代表這個(gè)無聊者序列的個(gè)數(shù)。Output:
輸出一個(gè)數(shù),代表子序列的個(gè)數(shù)為多少,該數(shù)需要mod(1000000007)Sample Input:
3 4Sample Output:
6 11 Hint: 對(duì)于第一個(gè)樣例,假如我們猜測(cè)瓜瓜初始排列的玻璃珠序列為(紅色;藍(lán)色;紅色),那么無聊者序列的子序列將會(huì)是以下6個(gè): 紅 藍(lán) 紅 紅藍(lán) 藍(lán)紅 紅藍(lán)紅解題思路:規(guī)律題。簡單推導(dǎo)一下前5個(gè)玻璃珠構(gòu)成地?zé)o聊者序列:記紅色為0,藍(lán)色為1;規(guī)則:序列顏色是交替的。
當(dāng)n=1時(shí),假設(shè)序列是0(當(dāng)然也可以是1,但只要其中的一種情況就可以了),所以子序列為0--->1個(gè);
當(dāng)n=2時(shí),假設(shè)序列是01(當(dāng)然也可以是10),此時(shí)的子序列為0、1、01--->3個(gè);(1+2)
當(dāng)n=3時(shí),假設(shè)序列是010(當(dāng)然也可以是101),此時(shí)的子序列為0、1、0、01、10、010--->6個(gè);(3+3)
當(dāng)n=4時(shí),假設(shè)序列是0101(當(dāng)然也可以是1010),此時(shí)的子序列為0、1、0、1、01、01、10、01、010、101、0101--->11個(gè);(6+5)
當(dāng)n=5時(shí),假設(shè)序列是01010(當(dāng)然也可以是10101),此時(shí)的子序列為0、1、0、1、0、01、01、10、10、01、10、010、010、010、101、010、0101、1010、01010--->19個(gè);(11+8)
以上求子序列要按照無聊者序列規(guī)則來從左到右推導(dǎo),通過觀察結(jié)果個(gè)數(shù)之間的關(guān)系,可以發(fā)現(xiàn)后一個(gè)數(shù)減去前一個(gè)數(shù)的結(jié)果剛好為斐波那契數(shù)列規(guī)律,于是果斷打表,但打表過程可能出現(xiàn)數(shù)據(jù)過大,此時(shí)的取余應(yīng)為同余思想,剩下就簡單了,水過。
AC代碼:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1000005; 4 const int mod = 1000000007; 5 typedef long long LL; 6 LL a[maxn],b[maxn]; 7 int main(){ 8 a[0]=a[1]=b[1]=1; 9 for(int i=2;i<maxn;++i)
10 a[i]=(a[i-1]%mod+a[i-2]%mod)%mod;//同余 11 for(int i=2;i<maxn;++i) 12 b[i]=(b[i-1]+a[i])%mod; 13 int n; 14 while(cin>>n){ 15 cout<<b[n]<<endl; 16 } 17 return 0; 18 }
轉(zhuǎn)載于:https://www.cnblogs.com/acgoto/p/9058506.html
總結(jié)
以上是生活随笔為你收集整理的ACM_无聊者序列(斐波那契数列大数取余(同余)+规律)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx+tomcat+redis实现
- 下一篇: golang 小知识-持续更新中