小麦亩产一千八(jzoj 3461)
小麥畝產(chǎn)一千八
jzoj 3461
題目大意
給你一個(gè)正整數(shù)序列:a0,a1,a2a_0,a_1,a_2a0?,a1?,a2?……
a0a_0a0?為1
a1a_1a1?為p
ax=ax?1+ax?2(x>1)a_x=a_{x-1} + a_{x-2}(x>1)ax?=ax?1?+ax?2?(x>1)
現(xiàn)在給你三個(gè)數(shù)x,ax,yx,a_x,yx,ax?,y,讓你判斷該序列是否合法,然后求aya_yay?是的值(多組數(shù)據(jù))
輸入樣例
1 1 2 3 5 4 3 4 6 12 17801 19輸出樣例
2 8 -1 516847樣例解釋
對(duì)于樣例二,f[1]=2 時(shí),能夠滿足f[3]=5,因此宰相沒有撒謊,此時(shí)第5 個(gè)格子的小麥數(shù)應(yīng)為f[4]=f[2]+f[3]=3+5=8.
數(shù)據(jù)范圍
對(duì)于50%的數(shù)據(jù):如果答案存在,那么p?50p\leqslant 50p?50
對(duì)于100%的數(shù)據(jù):1?1\leqslant1? 數(shù)據(jù)組數(shù)?10000\leqslant 10000?10000,1?a,b?201\leqslant a,b\leqslant 201?a,b?20, 數(shù)據(jù)保證如果答案存在,那么?p?1000000.\leqslant p\leqslant 1000000.?p?1000000.
解題思路
因?yàn)閍,b很小,我們可以提前求出前二十個(gè)數(shù)的常熟項(xiàng)和一次項(xiàng)系數(shù),我們減去常數(shù)項(xiàng),如果能整除一次項(xiàng)系數(shù)那它就是p,然后直接求aya_yay?即可
代碼
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define ll long long using namespace std; ll x, y, p, xs, a[30], b[30]; int main() {a[0] = 1;b[1] = 1;for (int i = 2; i <= 20; ++i)a[i] = a[i - 1] + a[i - 2], b[i] = b[i - 1] + b[i - 2];//預(yù)處理while(~scanf("%lld%lld%lld", &x, &xs, &y)){if ((xs - a[x]) % b[x] == 0) p = (xs - a[x]) / b[x];//判斷是否合法else p = 0;if (p) printf("%lld\n", a[y] + b[y] * p);//求結(jié)果else printf("-1\n");}return 0; }總結(jié)
以上是生活随笔為你收集整理的小麦亩产一千八(jzoj 3461)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win8怎么更新网卡驱动
- 下一篇: 秀姿势(jzoj 3464)