LibreOJ 6053 簡單的函式

2021-08-20 01:35:11 字數 1523 閱讀 1220

某一天,你發現了乙個神奇的函式f(

x)f (x

),它滿足很多神奇的性質:

1. f(1

)=1 f(1

)=

12. f(

pc)=

p⊕c f(p

c)=p

⊕c

(⊕表示異或)

3. f(a

b)=f

(a)f

(b) f(a

b)=f

(a)f

(b)(

a a

與b' role="presentation">b

b互質)

你看到這個函式之後十分高興,於是就想要求出∑n

i=1f

(i) ∑i=

1nf(

i)

由於這個數比較大,你只需要輸出 ∑n

i=1f

(i)mod(10

9+7)

∑ i=

1nf(

i)

mod(109

+7

)min_25版子題

【數論】min_25篩

**中包含遞迴和非遞迴版本,注釋中的均為遞迴版本,非注釋中的是非遞迴版本

全部改非遞迴的後更慢了???懵

#include 

#include

#include

#define fo(i,a,b) for(int i=a;i<=b;++i)

#define fod(i,a,b) for(int i=a;i>=b;--i)

#define min(q,w) ((q)>(w)?(w):(q))

#define max(q,w) ((q)<(w)?(w):(q))

#define gall(q) ((1ll+(q))*(ll)(q)/2%mo)

using namespace std;

typedef long long ll;

const int n=200500,mo=1000000007;

intread(int &n)

ll n,ans;

int m;

bool prz[n];

int pr[n/3];

int prs[n],prc[n],ps[n];

void pre(int n)

}}/*ll gf(ll n,int

m)*/

ll d[n];

int dz1[n],dz[n];

int f[n],f0[n];

ll gf(ll n)

fo(j,1,pr[0]-1)

}return f[1]-f0[1];

}/*ll gg(ll n,int

m) return ans;

}*/int g[n];

ll gg(ll n)}}

return (g[1]+(f[1]-f0[1]))%mo;

}int main()

loj6053 簡單的函式 min25篩

對於100 的資料,n 1e10 首先,考慮質數,即c 1的情形,f 2 3,其餘f p p 1,這裡就先統一f p p 1處理,然後對第乙個質數特判加2 由於f p p 1,所以這裡拆成兩部分,g用來算前面一項,質數p的字首和,h用來算後面一項,質數的個數即1的字首和 兩個陣列求法是一樣的,然後第...

Loj 6053 簡單的函式 Min25篩

定義乙個積性函式 f p c p xor c 求 sum nf i 異或這個東西不太好搞,要考慮怎麼求出 g 陣列。當 p 為質數時 f p p 1 所以我們讓 g n sum n i in pri i 1 就好了。然後因為 i 1 不是完全積性函式,所以拆成 i 和 1 分開來就好了。然後因為 f...

LOJ 6053 簡單的函式 Min 25篩

題目鏈結 min 25篩見這裡 給定 n 求積性函式 f p c p oplus c 的字首和。oplus 表示異或運算。n leq 10 所求積性函式為 f p c p oplus c,quad p in prime 先考慮質數的貢獻。因為除 2 以外的質數 p 都是奇數,所以 f p p 1 f...