2023年10月18日提高組 T1 春思

2021-08-29 07:44:59 字數 2426 閱讀 2549

求a

ba^b

ab的所有約數之和,答案對9901取模

首先a =p

1c1p

2c2p

3c3p

4c4…

…a=p_1^p_2^p_3^p_4^……

a=p1c1

​​p2

c2​​

p3c3

​​p4

c4​​

……所以a b=

(p1c

1p2c

2p3c

3p4c

4……)

ba^b=(p_1^p_2^p_3^p_4^……)^b

ab=(p1

c1​​

p2c2

​​p3

c3​​

p4c4

​​……

)b= p1

c1×b

p2c2

×bp3

c3×b

p4c4

×b……

=p_1^p_2^p_3^p_4^……

=p1c1​

×b​p

2c2​

×b​p

3c3​

×b​p

4c4​

×b​…

…然後,使用了下面這兩個程式進行推導

#include

using

namespace std;

int a,b,n,s;

signed

main()

printf

("\n%d"

,s);

}

依靠上面這個,推出了a+a

b+ab

2+ab

3……+

abn=

a×bn

−1b−

1a+ab+ab^2+ab^3……+ab^n=a\times \frac

a+ab+a

b2+a

b3……

+abn

=a×b

−1bn

−1​

#include

#include

using

namespace std;

int n,s,a[

10001

],len;

signed

main()

sort

(a+1

,a+1

+len)

;printf

("%d\n"

,s);

for(

register

int i=

1;i<=len;i++

)printf

("%d "

,a[i]);

}

靠上面這兩個就推出了質數的n

nn次方只能是這個質數的1

11到n

nn次方的和,也就是乙個等比數列

根據這個性質,我們把每個數分解成質因數,分別求解並相乘

注意判斷沒有逆元的情況

#include

#include

#define ymw 9901

using

namespace std;

long

long a,b,x,p[

1000001

],c[

1000001

],lenp,ans=1;

inline

long

long

ksm(

long

long x,

long

long y)

inline

long

longdb(

long

long bi,

long

long len)

signed

main()

if(x!=

1) p[

++lenp]

=x,c[lenp]=1

;for

(register

int i=

1;i<=lenp;i++

) c[i]

=c[i]

*b+1

;for

(register

int i=

1;i<=lenp;i++)if

((p[i]-1

)%ymw==

0)ans=ans*c[i]

%ymw;

else

(ans*=db

(p[i]

,c[i]

)%ymw)

%=ymw;

printf

("%lld"

,ans)

;}

2023年10月29日提高組 T1 A

n nn個球,m mm個盤,盤子不能空,求本質上不相同的方案數 首先深搜 include using namespace std int n,m,ans inline void dfs register int dep,register int sy,register int last 分完了,統計...

2023年10月30日提高組 T1 A

求樹上聯通快中最大值與最小值之差為k kk的方案數 設最大值與最小值之差為xxx x xx正好為k kk的方案數 x k x leq k x k 的方案數 x x k的方案數 於是我們就可以樹形dpdp dp啦fi fs on 1 f i prod f 1 fi fson 1 include def...

2023年10月31日提高組 T1 A

求n nn的排列了交換為公升序的最小交換次數的期望 兩種思路 暴力打表找規律 動態規劃 第一種只需要打乙個bfs bfsbf s hash hash hash include include define p 10000007 using namespace std int n,ans struct...