ybt金牌導航8 6 5 最小原根

2021-10-21 07:55:14 字數 1110 閱讀 3256

給出乙個質數 p

pp,找他最小的原根。

不知道原根的可以看這個:

——>點我<——

至於找原根,其實我們可以用乙個近似暴力的方法找。

為什麼可以呢,因為它原根分布廣,而且最小的也比較小。

我們就考慮判斷乙個數是否是原根。

對於要檢查 g

gg 是不是模 p

pp 的原根,我們可以列舉 φ(p

)\varphi(p)

φ(p)

的質因子 a

aa,然後檢查 gφ(

p)a≡

1(mo

dp

)g^}\equiv1(\mod\ p)

gaφ(p)

​≡1(

modp

) 是否成立,如果成立了,就說明它不是原根。

這道題因為 p

pp 是質數,所以 φ(p

)\varphi(p)

φ(p)

就直接等於 p−1

p-1p−

1 了。

#include

#include

#define ll long long

using

namespace std;

int n, prime[

100001];

int zyz[

10001];

bool np[

100001];

void

get_prime()

for(

int j =

1; j <= prime[0]

&& i * prime[j]

<=

100000

; j++)}

}void

fenjie

(int now)

if(now >

1) zyz[

++zyz[0]

]= now;

}ll ksm

(ll x, ll y)

return re;

}int

main()

}if(yes)

}return0;

}

ybt金牌導航1 2 4 免費餡餅

有乙個直線,在某乙個時刻有乙個餡餅會出現在一些位置,有它的價值。乙個人一開始可以站在直線的任意地方,然後他每個時刻可以不移動,或向任意一邊移動乙個單位或兩個單位。要你求這個人最多能拿多少價值的餡餅。我們看到這道題,弄出最普通的 dp。f i 為對於前 i 個餡餅,接住了第 i 個的最大貢獻。那就是列...

ybt金牌導航1 1 2 乘坐電梯

有乙個電梯,有 n 個人要進電梯。對於每一秒,排在最前面的人有 p 的機率會進電梯 不會再出來 否則不進,別的人都不進。問你 t 秒後,在電梯上的人的期望數量。這道題我們先設 fi,jf fi,j 為在第 i ii 秒之後有 j jj 個人在電梯上的概率。那首先初始化很顯然,f0,0 1f 1 f0...

ybt金牌導航6 1 1 第 k 小數

求序列中第 k 小的數。不能 nlogn 做。這道題可以用分治來做,分治有點二分的味道。它每次選乙個數列中的數,然後把比它大的放在前面,比它小的放在後面,然後它放在中間。這個你可以搞兩個指標來搞,每次找到兩邊然後 swap 那它的位置就是它的排名 你也只確定了它的,但是夠了 然後如果排名就是你要的,...