Loj 6053 簡單的函式 Min25篩

2022-03-29 05:37:21 字數 750 閱讀 3211

定義乙個積性函式\(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(2)=3\),所以答案會少\(2\),加回去就好了。

#include#include#include#include#define ll long long

using namespace std;

const ll n=1e6+10,p=1e9+7;

ll n,t,cnt,tot,w[n],pri[n],sp[n],g1[n],g2[n],ind1[n],ind2[n];

bool v[n];

void init(ll n)

for(ll j=1;j<=cnt&&i*pri[j]<=n;j++)

}return;

}ll s(ll x,ll y)

signed main()

for(ll i=1;i<=cnt;i++)

for(ll j=1;j<=tot&&pri[i]*pri[i]<=w[j];j++)

printf("%lld\n",s(n,0)+1);

return 0;

}

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 簡單的函式 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...

LOJ6053 簡單的函式(min 25篩)

題目大意 從前有個積性函式 f 滿足 f 1 1,f p k p oplus k 異或 求其前 n 項的和對 10 9 7 取模的值。1 le n le 10 這種奇怪但是簡潔的積性函式求和,首選 min 25 篩。首先可以發現,對於質數 p p ge 3 時 f p p 1 p 2 時 f p p...