石油大第四場 C A X mod P

2021-10-24 09:07:46 字數 2721 閱讀 1022

問題 c: a^x mod p

時間限制: 5 sec 記憶體限制: 128 mb

題目描述

it』s easy for acmer to calculate a^x mod p. now given seven integers n, a, k, a, b, m, p, and a function f(x) which defined as following.

f(x) = k, x = 1

f(x) = (a*f(x-1) + b)%m , x > 1

now, your task is to calculate

( a^(f(1)) + a^(f(2)) + a^(f(3)) + … + a^(f(n)) ) modular p.

輸入in the first line there is an integer t (1 < t <= 40), which indicates the number of test cases, and then t test cases follow. a test case contains seven integers n, a, k, a, b, m, p in one line.

1 <= n <= 10^6

0 <= a, k, a, b <= 10^9

1 <= m, p <= 10^9

輸出for each case, the output format is 「case #c: ans」.

c is the case number start from 1.

ans is the answer of this problem.

樣例輸入 copy

23 2 1 1 1 100 100

3 15 123 2 3 1000 107

樣例輸出 copy

case #1: 14

case #2: 63

乙個比較顯然的做法是直接每項快速冪,複雜度是o(n

logn

)o(nlogn)

o(nlog

n),卡常應該卡不過去,所以需要換一種做法。

怎麼優化能過呢?顯然需要去掉乙個log

loglo

g,這就需要o(n

)o(n)

o(n)

的預處理了。

我們可以預處理出 a 的1 ~ 1e5 次冪,記錄為陣列a,讓後再預處理出 a1e

5a^

a1e5

的 1 ~ 1e5 次冪,記錄為陣列b,顯然這都是o(n

)o(n)

o(n)

的。讓後考慮這樣乙個東西:xa∗

xb=x

a+

bx^a*x^b=x^

xa∗xb=

xa+b

對於每個要求的a的次冪,假如是a1e

6+

10a^

a1e6+1

0,我們可以轉換成 a1e

510∗a

10a^}*a^

a1e510

∗a10

,那麼答案就是 a[10

]∗b[

10]

a[10]*b[10]

a[10]∗

b[10

] 。也就是說對於乙個x次冪,答案就是b[x

/1e5

]∗a[

xmod

1e5]

b[x/1e5]*a[x \bmod1e5]

b[x/1e

5]∗a

[xmo

d1e5

]。還要注意一點就是f[1

]f[1]

f[1]

是不能%m的,因為這個我wa了十多發了。。

#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

#define r (u<<1|1)

#define mid (tr[u].l+tr[u].r>>1)

#define len(u) (tr[u].r-tr[u].l+1)

#define pb push_back

#define mk make_pair

#define re register

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n=

1000010

,inf=

0x3f3f3f3f

,l=100000

;const

double eps=

1e-6;

ll pre[n]

,f[n]

,pre2[n]

;int

main()

}printf

("%lld\n"

,ans%p);}

return0;

}/**/

第四場補題(待續)

frog jumping 水 include include include include include include include include include define ll long long define inf 0x3f3f3f3f using namespace std i...

2013第四場多校

多校第四場 6題,打得最好的一場多校。還是cjboy給力。本場比賽我基本上沒什麼貢獻,搞04一搞就是一下午。最後看了09覺得只有狀態壓縮,不知道怎麼優化。1004 圖論,強聯通分量 0 一開始推理的時候思路很清晰,但是接著就腦殘了,沒怎麼細想就直接去套樣例。以為得到了正確的解法,只是需要乙個特判。然...

暑期個人賽 第四場 A

時間限制 2000 ms 記憶體限制 65536 kb 大家都回了本部,本部生活雖然沒有巨集福天 mo 堂 gui 般的生活,但是卻有很多外賣,今天有一家飯店新開張,凡是兩個人的餐點費用之和剛好為m可以免運費,在今天一起點外賣且免運送費的兩個人,各自點的外賣 差值最小的有大驚喜。在機房的n個同學今天...