BZOJ2186 沙拉公主的困惑(數論)

2021-08-14 19:54:00 字數 1366 閱讀 6932

bzoj

考慮答案是啥

先假設n=m

現在求的就是φ(

m!)

但是現在n!

是m! 的若干倍

我們知道 gc

d(x,

y)=g

cd(x

+ky,

y)所以,相當於 每隔m

! ,答案增長的值都是φ(

m!)

所以 我們可以得出 an

s=n!

m!φ(

m!)

後面的φ

可以直接拆開,列舉質因數 an

s=n!

m!⋅m

!∏pi

∏(pi

−1)

ans=

n!∏p

i∏(p

i−1)

其中,pi

<=m

所以,預處理n!

,質數的字首乘,還有質數−1

的字首乘

至於逆元就不要預處理了(慢的死)

要用的時候直接快速冪算一下

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max 10000000

inline

int read()

int r;

int n,m;

bool zs[max+1];

int pri[max/10],tot,jc[max+1];

int inv[max+1],pinv[max/10],ppri[max/10];

int pos[max+1];

int fpow(int a,int b)

return s;

}void pre()

}pinv[0]=ppri[0]=1;

for(int i=1;i<=tot;++i)pinv[i]=1ll*pinv[i-1]*pri[i]%r;

for(int i=1;i<=tot;++i)ppri[i]=1ll*ppri[i-1]*(pri[i]-1)%r;

for(int i=1;i<=tot;++i)

for(int j=pri[i];j1];++j)

pos[j]=i;

}int query(int n,int m)

int main()

return

0;}

莎拉公主的困惑(bzoj 2186)

大富翁國因為通貨膨脹,以及假鈔氾濫,決定推出一項新的政策 現有鈔票編號範圍為1到n的階乘,但是,只發行編號與m 互質的鈔票。房地產第一大戶沙拉公主決定 一下大富翁國現在所有真鈔票的數量。現在,請你幫助沙拉公主解決這個問題,由於可能張數非常大,你只需計算出對r取模後的答案即可。r是乙個質數。第一行為兩...

尤拉函式 Bzoj P2186 沙拉公主的困惑

大富翁國因為通貨膨脹,以及假鈔氾濫,決定推出一項新的政策 現有鈔票編號範圍為1到n的階乘,但是,只發行編號與m 互質的鈔票。房地產第一大戶沙拉公主決定 一下大富翁國現在所有真鈔票的數量。現在,請你幫助沙拉公主解決這個問題,由於可能張數非常大,你只需計算出對r取模後的答案即可。r是乙個質數。1 inc...

Windows沙拉 找回消失的「休眠」

如下圖,在 開始 選單的 關機 子選單裡找不到休眠。我記著xp時代的時候好像是在 電源管理 那裡。不過沒有發現相關的設定項。查詢了下資料,很快就找到了解決辦法 在執行中輸入 或者在命令列下輸入 注意 執行這個命令需要管理員許可權。如果執行上面的命令後還沒有,這時候開啟 控制面板 硬體和聲音 電源選項...