YbtOJ20025 放置石子

2022-02-14 05:23:03 字數 1203 閱讀 3553

好不容易a了一道題怎麼能不寫題解呢~

戳這裡一天小明坐在沙灘上玩石子,但是過了一會兒小明就玩膩了,於是他給自己出了一道難題:如果有乙個棋盤,在棋盤外放置一粒石子,可以將其理解為第\(0\)個格仔,然後需要在第乙個格仔裡放入若干個石子,之後每乙個格仔放入前兩個格仔的石子數之和的石子,並且要滿足第\(a\)個格仔放\(x\)粒石子,並求出第\(b\)個格仔有多少個石子。

當然小明沒有那麼聰明,他給你的條件可能是錯誤的(就是第\(a\)個格仔可能沒有\(x\)粒石子),所以當條件是錯誤的時候你要告訴小明這個條件不成立。

該題有多組資料,請讀到檔案末結束。

對於每一組資料僅一行,\(3\)個正整數\(a,x,b\),分別表示第\(a\)個格仔放了\(x\)粒石子,以及你所需要計算的是第\(b\)個格仔的石子數量。

對於每一次詢問,僅\(1\)個整數,為第\(b\)個格仔的石子數量,若小明說的情況不存在,那麼請輸出-1

對於\(50\%\)的資料:如果答案存在,那麼\(p\leq50\) 。

對於\(100\%\)的資料:\(1\leq\)資料組數\(\leq10^4\),\(1\leq a,b\leq20\),資料保證如果答案存在,那麼\(1\leq p\leq10^6\) 。(注: \(p\)是第一格放置的石子數)。

這道題嘛……很明顯,就是乙個斐波那契數列,雖然我考試的時候不是這麼寫的

這裡我們有乙個更簡潔,好用,簡單的演算法————

打表 是的沒錯,就是打表

我們看一下資料範圍:\(1\leq a,b\leq20\)。那沒事兒啊這麼點資料範圍心裡瞬間有底了

那我們就可以打表啦~

我們先找一下規律:

設第乙個格放了\(x\)個石子

就會變成這個亞子:

然後我們只要判斷給出的數 減去 相對應的常數 取模 相對應的單項式

若 不等於 \(0\),就直接輸出-1

#include#include#include#includeusing namespace std;

long long y[21] = ;

long long z[21] = ;

int main()

return 0;

}

雷達裝置 Ybtoj

有n nn個建築物,第i ii個建築物在笛卡爾座標系上的座標為 xi yi x i,y i xi y i 你需要在x xx軸上安裝一些雷達,每個雷達的偵察半徑均為d dd,要求每個建築物都至少被乙個雷達偵測到,求最少要安裝幾個雷達。第一行兩個正整數n,d n,dn,d。接下來n nn行,第i ii行...

YBTOJ 電路維修

思路 乍一看這題,沒有bfs的頭緒 但是,我們想到了spfa 我們可以把地圖中的每個點看成方格,這樣就有 n 1 m 1 個方格 如果兩點之間有線聯通,那它們之間的邊權就是0,否則就為1 然後spfa就可以了 include include include using namespace std i...

YBTOJ 守衛挑戰

有 n 項任務,有乙個數 k 每一項任務成功的概率是 p i 這裡與原題目不同,原題目是百分之 p i 這裡相當於 p i frac 成功後會使 k 加上 a i 問至少成功 l 次且最後 k leq0 的概率是多少。資料範圍 0 leq k leq2000,0 leq l leq n leq 20...