BZOJ4916 神犇與蒟蒻

2022-08-17 15:54:16 字數 1311 閱讀 1299

很久很久以前,有乙隻神犇叫yzy;

很久很久之後,有乙隻蒟蒻叫lty;

請你讀入乙個整數n;\(1<=n<=10^9\),a、b模\(10^9+7​\);

請你輸出乙個整數\(a=\sum_^n\);

請你輸出乙個整數\(b=\sum_^n\);

1\第一問:

根據定義,答案永遠等於\(1\)。

第二問:

首先,顯然有\(\varphi(i^2)=i\cdot\varphi(i)\)。

根據杜教篩的套路式:

\[g(1)s(n)=\sum_^n(g*f)(i)-\sum_^ng(i)s(\frac ni)

\]通過(我也不知道怎麼出來的)分析可得,令\(g(x)=x\):

\[\begin

(f*g)(i)&=\sum_\varphi(d)\cdot d\cdot \frac\\

&=\sum_\varphi(d)\cdot i\\

&=i\sum_\varphi(d)\\

&=i^2

\end

\]如此一來:

\[\sum_^n(g*f)(i)=1^2+2^2+...+n^2=\frac6

\]代回套路式可得:

\[s(n)=\frac6-\sum_^ni\cdot s(\frac ni)

\]現在,這個式子就可以用杜教篩解決了。

#include#include#include#include#include#include#include#include#define maxn 0x7fffffff

typedef long long ll;

const int n=3e6+5,m=n-5;

const int mod=1e9+7,inv6=166666668;

using namespace std;

inline int getint()while(isdigit(ch))return x*f;}

int prime[n],phi[n];

bool vis[n];

mapsphi;

int sphi(int x)

return sphi[x]=(ret+mod)%mod;

}int main()

phi[i*prime[j]]=phi[i]*phi[prime[j]];

} }for(int i=1;i<=m;i++)phi[i]=(1ll*phi[i]*i+phi[i-1])%mod;

int n=getint();

cout<<1<<'\n'

}

BZOJ 4916 神犇和蒟蒻

很久很久以前,有乙隻神犇叫yzy 很久很久之後,有乙隻蒟蒻叫lty 請你讀入乙個整數n 1 n 1e9,a b模1e9 7 請你輸出乙個整數a sum n 請你輸出乙個整數b sum n 1by monster yi 杜教篩 推導詳見 其中ni2和ni6分別是2和6的逆元,是用快速冪求出來的 inc...

bzoj4916 神犇和蒟蒻

求 i 1n i2 和 i 1n i2 n 1e9,答案對1e9 7取模 被題目名字和ac人數騙進來,一看題還嚇了一跳 難道這是什麼最新的操作.jpg 然後仔細看了一眼題 mdzz這不是隨便做嗎?的話除了i 1不是全部為0嗎?的話把式子拆出來就可以發現 i2 i i 然後就直接上杜教篩就好了。隱藏水...

bzoj4916 神犇和蒟蒻

首先看第乙個式子,根據莫比烏斯函式的性質可知,當i 1時,i 1 其它都是0.所以輸出1 然後看第二個式子。根據尤拉函式的性質,平方的部分多出來的質因數已經出現過,所以式子變成 n i 1i i 這個用杜教篩來求。include include include include using names...