洛谷P4588 TJOI2018 數學計算

2022-05-24 01:24:07 字數 677 閱讀 8261

題目大意:有乙個數$x$和取模的數$mod$,初始為$1$,有兩個操作:

$m:x=x\times m$並輸出$x\% mod$

$pos:x=x/第pos次操作乘的數$(保證合法),並輸出$x\%mod$

題解:對時間建一棵線段樹,記錄區間積就可以了

卡點:

c++ code:

#include #define maxn 100010

int tim, n, mod;

long long v[maxn << 2];

void build(int rt, int l, int r)

void add(int rt, int l, int r, int p, int num)

int mid = l + r >> 1;

if (p <= mid) add(rt << 1, l, mid, p, num);

else add(rt << 1 | 1, mid + 1, r, p, num);

v[rt] = v[rt << 1] * v[rt << 1 | 1] % mod;

}int main()

} return 0;

}

洛谷 P4588 TJOI2018 數學計算

小豆現在有乙個數x xx,初始值為1 11.小豆有q qq次操作,操作有兩種型別 一共有t tt組輸入 t 5 t leq 5 t 5 對於每一組輸入,第一行是兩個數字q,m od q 100000,m od 1000000000 q,mod q leq 100000,mod leq 1000000...

P4588 TJOI2018 數學計算

說實話第一眼沒看出來這是個線段樹題 仔細一想就算是你把每次操作計算出來,每次除去找數,然後除掉,那樣就只能最 後取mod,或求很多逆元,不取模你會炸 longlong。如何解決?我們以時間為軸,建立線段樹,葉子結點維護該操作時間的乘數,非葉子結點維護 區間乘,葉子結點一開始都為 1 然後每次乘,進行...

線段樹 P4588 TJOI2018 數學計算

這道題目,看起來只給了乙個數,與線段樹關係不大,但是將每次的操作存起來,就相當於是點更新,段查詢 乘積 這樣就可以轉化為線段樹的問題了。對於操作1,我們可以把對應的位置修改為相應值 操作2,把當前位置,和pos的位置改為1 並維護線段樹即可 includeusing namespace std co...