51Nod1239 尤拉函式之和 杜教篩 雜湊表

2022-10-10 14:27:13 字數 2142 閱讀 8309

尤拉函式之和

做法:這題需要用到杜教篩+雜湊表。這一題和51nod1244(我寫的題解)都是杜教篩的模板題。 設f

(n)=

∑ni=

1φ(i

),利用∑d

|nφ(

d)=n

這一性質來推導式子,我們來求函式i(

n)=n

的字首和,顯然∑n

i=1i

(i)=

n(n+

1)2,那麼∑n

i=1∑

d|iφ

(d)=

n(n+

1)2,所以: ∑i

=1n∑

d=1⌊

ni⌋φ

(d)=

∑i=1

nf(⌊

ni⌋)

=n(n

+1)2

將f(n

)一項提出來,得: f(

n)=n

(n+1

)2−∑

i=2n

f(⌊n

i⌋)遞迴+分塊計算+雜湊表判重+預處理106

以內的f

即可通過此題。注意,做乘法時兩邊數值可能較大,需要先對109

+7取模再相乘。

以下是本人**:

簡單直接的除數取餘雜湊(ac):

#include 

#include

#include

#include

#include

#define ll long long

#define limit 1000000

#define size 7500000

#define smod 7500000

#define mod 1000000007

using

namespace

std;

ll n,h[size+5]=,f[size+5];

int phi[limit+5],sum[limit+5],tot=0;

bool prime[limit+5]=;

int hash(ll x)

void calc_phi(ll x)

}sum[0]=0;

for(int i=1;i<=x;i++) sum[i]=(sum[i-1]+phi[i])%mod;

}ll mult(ll a,ll b,ll c)

ll count(ll x)

h[pos]=x,f[pos]=((mult(x,x+1,2)-s)%mod+mod)%mod;

return f[pos];

}int main()

類似鄰接表布局的除數取餘雜湊(tle,13/25):

所以就不應該亂想什麼詭異的技巧……

#include 

#include

#include

#include

#include

#define ll long long

#define limit 1000000

#define size 5000000

#define smod 5000000

#define mod 1000000007

using

namespace

std;

ll n,h[size+5]=,f[size+5];

int phi[limit+5],sum[limit+5],tot=0,first[size+5]=,next[size+5];

bool prime[limit+5]=;

int hash(ll x)

void calc_phi(ll x)

}sum[0]=0;

for(int i=1;i<=x;i++) sum[i]=(sum[i-1]+phi[i])%mod;

}ll mult(ll a,ll b,ll c)

ll count(ll x)

h[pos]=x,f[pos]=((mult(x,x+1,2)-s)%mod+mod)%mod;

return f[pos];

}int main()

51nod1239 尤拉函式之和

求 i 1n i n 10 10 這道題和莫比烏斯函式一行,都可以通過神奇的推導的出結論。我們設 n i 1n i 眾所周知,d n d n 那麼,n n d n,d d 於是 n i 1n i d i,d d n n n 1 2 i 2n d i d d n n n 1 2 i d 2n d 1 ...

51nod 1239 尤拉函式之和

求 n i 1 i 1 n 10 杜教篩第二道裸題。必要結論 i n i n 證明 設f n i n i 將n分解質因數,n p qii 利用莫比烏斯函式裡學到的乙個性質,可以得到 f n f pq ii f pq qk 0 pk q k 1p k pk 1 1 p q f n n 設s n n i...

51Nod 1239 尤拉函式之和

acm模版 這個題和那個 51nod 1244 莫比烏斯函式之和 的方法幾乎一模一樣,差別就是推導公式的結果不一樣罷了,但是形式是一樣的。推導如下 設 f n i 1 n i 通過尤拉函式的性質我們可以知道 d n d n 所以呢,n n d n,d d f n i 1n i d i,d d f n...