這道題給了乙個很明顯的乙個序列,那麼就是數列可以一次寫為:(1+0),
(1+0
+1),
(1+0
+1+2
),(1
+0+1
+2+3
)...
...(
1+0+
1+2+
..+n
−1) ,這樣就轉化為1加上乙個等差數列,那麼直接按照等差數列求和公式sn
=(a1
+an)
∗n/2
,這樣就很容易求出答案。但是中間用公式的時候會用到i∗
n∗(i
∗n+1
) ,注意i和n都是106
數量級的,那麼這樣就會爆long long,因此我們需要用到求逆元的乙個公式an
s=(a
/b)m
odm=
amod
(b∗m
)/b 求出,這樣才能全部資料通過,不然會錯最後一組。
#include
#include
#include
#include
using
namespace
std;
#define ll long long
int main()
}
藍橋杯 歷屆試題 數字遊戲
先看到資料規模,如果純暴力的話10 6 10 6肯定是要超時的,所以我們要想辦法優化,因為我們只關心棟棟報出的數字總和,我們又知道了其他人報的規律是前面乙個人的 1 2 3 4這樣報的,那麼換句話來說,我們只要知道每迴圈一組總共加了多少,把這些總和加起來加到棟棟上次報的數字上,就能知道棟棟這次報的數...
藍橋杯 歷屆試題 數字遊戲
時間限制 1sec 記憶體限制 128mb 提交 612 解決 78 題目描述 棟棟正在和同學們玩乙個數字遊戲。遊戲的規則是這樣的 棟棟和同學們一共n個人圍坐在一圈。棟棟首先說出數字1。接下來,坐在棟棟左手邊的同學要說下乙個數字2。再下面的乙個同學要從上乙個同學說的數字往下數兩個數說出來,也就是說4...
1443 藍橋杯 歷屆試題 數字遊戲
為了使數字不至於太大,當在心中數到 k 1 時,下乙個數字從0開始數。ps 相當於取模 例如,當k 13時,棟棟和同學們報出的前幾個數依次為 1,2,4,7,11,3,9,3,11,7。遊戲進行了一會兒,棟棟想知道,到目前為止,他所有說出的數字的總和是多少。棟棟說出的數依次為1,7,9,和為17。資...