jzoj3461-小麦亩产一千八【斐波那契数列】
生活随笔
收集整理的這篇文章主要介紹了
jzoj3461-小麦亩产一千八【斐波那契数列】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
大意
第零個格1個,第一格有p個,之后第i格就是第i-1格加i-2格。知道第a格有x個,求第b格有多少個。
解題思路
我們推一下
| pp | p+1p+1 | 2p+12p+1 | 3p+23p+2 | 5p+35p+3 | 8p+58p+5 | 13p+813p+8 | 21p+1321p+13 |
不難發現pp的系數和右邊的加數都是斐波那契數列。我們可以先預處理一下斐波那契數列然后求出pp之后就可以計算第b格了
代碼
#include<cstdio> #include<iostream> #define ll long long using namespace std; ll f[31],a,x,b,p; int main() {f[1]=1;f[2]=1;for (ll i=3;i<=30;i++)f[i]=f[i-1]+f[i-2];//預處理斐波那契數列while (scanf("%d%d%d",&a,&x,&b)!=EOF)//輸入{x-=f[a-1];p=x/f[a];//計算pif (x%f[a]!=0) printf("-1\n");//判斷無解else{if (b==1) printf("%lld\n",p);//特判else printf("%lld\n",p*f[b]+f[b-1]);//輸出}} }總結
以上是生活随笔為你收集整理的jzoj3461-小麦亩产一千八【斐波那契数列】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018/7/18-纪中某C组题【jzo
- 下一篇: jzoj3462-休息【归并排序,逆序对