【牛客 - 280A】勘测(fib数列,思维,打表)
生活随笔
收集整理的這篇文章主要介紹了
【牛客 - 280A】勘测(fib数列,思维,打表)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
Actci偶然發現了一個礦洞,這個礦洞的結構類似與一棵二叉樹,Actci發現的礦洞恰好位于根節點處,為了盡快挖掘,Actci找來了她的小伙伴們來幫忙,由于地質原因,每天小伙伴們只能打通到一條到子節點的道路(不消耗時間),也就是說每天一個節點只能向一個子節點建設道路,走一條路需要一天的時間,當發現一條道路后,會有一部分小伙伴選擇留下來繼續勘測,假設小伙伴們有無數個,樹的深度足夠大,問第n天最多共建設幾條道路。
輸入描述:
一行,一個數n。輸出描述:
一行,一個數表示最多建設的道路數,答案對 10000000007 取模。示例1
輸入
復制
2輸出
復制
3說明
樣例解釋: 設n號點的子節點編號為n×2和n×2+1,根節點編號為1. 第一天1->2,在1,2處留有一部分人,道路數為1。 第二天1->3,2->4,在2,3,4處留有人,道路數為3.示例2
輸入
復制
100輸出
復制
6531708670備注:
數據范圍: 對于100%的數據保證 n ≤ 5×106?
解題報告:
? 模擬出前幾項打表發現是個fib數列有關。
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define ll long long #define pb push_back #define pm make_pair #define fi first #define se second using namespace std; const int MAX = 5e6 + 5; ll mod = 10000000007; ll f[MAX]; int main() {int n;cin>>n;f[1]=1;for(int i = 2; i<=n+10; i++) {f[i]=f[i-1]+f[i-2];f[i]%=mod;}printf("%lld\n",(f[n+3]+mod-2)%mod);return 0 ;}?
總結
以上是生活随笔為你收集整理的【牛客 - 280A】勘测(fib数列,思维,打表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前行长建议,将没收的贪官资产纳入养老基金
- 下一篇: 【HDU - 6203】ping pin