好久沒更部落格了,先水一篇再說。其實這個做法應該算是杜教篩的乙個拓展。
powerful number的定義是每個質因子次數都 $\geq 2$ 的數。首先,$\leq n$ 的powerful number個數是 $o(\sqrt)$ 的,這是因為所有powerful number顯然可以表示成 $a^2b^3$,所以個數不超過 $\sum_^} (n/i^2)^$,積分積一下就算出來了。求所有 $\leq n$ 的powerful number只要暴搜質因子分解式即可。
例題1 pe63?
有乙個積性函式 $f$ 滿足對於所有質數 $p$,$f(p^q)=p~(q \geq 1)$,求 $f$ 的字首和。
我們發現有乙個跟它長得很像的積性函式 $g$!$g(x)=x$,我們會求 $g$ 的字首和!並且對於所有質數 $p$,$g(p)=f(p)=p$。
我們求出 $h=f/g$,其中除法指的是狄利克雷除法,即狄利克雷卷積的逆運算。$h$ 也是乙個積性函式,那麼由 $f(p^q)=\sum_^q g(p^i)h(p^)$ 和 $h(1)=1$ 不難發現對於所有質數 $p$,$h(p)=0$。
我們欲求的是 $\sum_^n f(i)$,由於 $f=h*g$(乘法為狄利克雷卷積),那麼有 $\sum_^n f(i)=\sum_ h(i)g(j)=\sum_^n h(i) \sum_^ g(j)$。
由於 $h(p)=0$,所有 $h(i) \neq 0$ 的位置顯然都是powerful number,我們只需列舉所有powerful number,算出對應的 $h$ 即可。
例題2 pe48?
求滿足對質數 $p$,$f(p^d)=p^$ 的積性函式 $f$ 的字首和。
$f(p)=1$。同上構造 $g(x)=1$ 即可。
例題3 loj6053
求滿足對質數 $p$,$f(p^c)=p \oplus c$ 的積性函式 $f$ 的字首和。
對 $p \neq 2$,$f(p)=p-1$。構造 $g=\varphi$ 即可,注意要特殊處理一下 $p=2$ 的情形。求尤拉函式的字首和可以杜教篩,這裡不再贅述。跑過min25篩是不可能的,這輩子都不可能跑過的
這裡給出loj6053的**:
#include usingnamespace
std;
typedef
long
long
ll;const
int mod=1e9+7
;#define sz 10000099
bool
np[sz];
int ph[sz],ps[sz/10
],pn;
void
shai()
ph[i*ps[j]]=ph[i]*(ps[j]-1
); }
}for(int i=1;ii)
ph[i]=(ph[i-1]+ph[i])%mod;
}ll n,u,s[
1005
];ll s2(ll a)
int h[100099][66],d[100099
];ll ans=0
;void dfs(ll x,ll v,int
w)
if(!h[s][j]) continue
; dfs(y,v*h[s][j]%mod,s+1
); }
}}int
main()
dfs(
1,1,1
); ans=(ans%mod+mod)%mod;
cout
<"\n"
;}
mysql 利用 mysql利用
mysql 寫入webshell復現 1.直接寫入 windows成功率較高 1.檢視是否允許可寫 空可寫,null不行,5.5以前預設為空,5.5以後預設為null 2.寫入檔案 2.日誌檔案寫入shell 5.0以後會建立日誌檔案 資料庫許可權 1.檢視是否開啟日誌 2.開啟日誌 3.設定路徑 ...
利用AlwaysInstallElevated提權
2.啟用alwaysinstallelevated 3.提權 4.防禦方式 5.參考文章 alwaysinstallelevated是登錄檔的乙個鍵值,當其值為1的時候,普通使用者即可以system許可權安裝msi程式。certutil.exe urlcache split f開啟powershel...
鉤子的利用
在 ae 開發中,可以利用鉤子把 mapcontrol 給傳到由 itool 或者icommond 繼承的命令或者工具裡,傳進去的鉤子就是 hook 型別是乙個 object 實際上就是乙個 mapcontrol 可以用強制轉換為 mapcontrol icommand gtcstandard if...