顯然,符合條件的數必須滿足任何長度的字尾字典序必須嚴格大於全串。
假設乙個串
t t
可以由幾個相同的串
s' role="presentation" style="position: relative;">s
s拼接而成,我們稱
t t
為迴圈串。顯然所有迴圈串都是不滿足條件的。
那麼對於非迴圈串,那麼其所有迴圈表示(就是切下乙個字首拼在後面)都是互不相同的。給出乙個結論:乙個合法串和乙個環的最小迴圈表示串一一對應。
先證明乙個合法串一定是最小迴圈表示串。(以下px
' role="presentation" style="position: relative;">pxp
x表示長度為
x x
的字首,sx
' role="presentation" style="position: relative;">sxs
x表示長度為
x x
的字尾)假設合法串不是最小迴圈表示串,那麼設從第
i' role="presentation" style="position: relative;">i
i位開始,即sn
−i+p
i(i≠
0)s n−
i+pi
(i≠0
)是最小迴圈表示串,那麼我們可以得到sn
−i−i
s n−
i −i (矛盾)或者sn −i=p n−i sn− i=pn −i 並且si s i (也矛盾),於是得證。 再證明乙個最小迴圈表示串一定是合法的。假設其不合法,那麼必然存在乙個si s i (矛盾)或者si =pi si= pi 並且把pn −ip n− i拼到後面能得到pn −i>si p n− i>si (也矛盾),得證。 那麼我們設fn f n表示長度為 n n 的合法串的個數,顯然有: fn =1n( 10n−∑ d|n, dfd)' role="presentation">fn= 1n(10 n−∑d |n,d fd)f n=1n (10n− ∑d|n ,dfd)其中 ∑d|n dfd ∑d| ndfd 是減去迴圈串,1n 1 n是因為 n n 種迴圈表示中只有 1' role="presentation" style="position: relative;">1 1種合法。我們設gi =fi⋅ n2g i= fi⋅n 2,問題要求的就是∑n i=1g i ∑i= 1ngi ,那麼: ∑i =1ng i=∑i =1ni ⋅10i− ∑i=1 n∑d| i,d⋅gdd ∑ i= 1ngi =∑i= 1ni⋅ 10i−∑ i=1n ∑d|i ,d ⋅gdd 前乙個和式是乙個等比數列乘等差數列,用錯位相減直接求,後乙個和式換成列舉k= idk =i d,得到 ∑i =1ng i=n⋅ 10n+1 −10n+ 1−19 +19− ∑k=2 n∑i= 1⌊nk ⌋gk ∑i= 1ngi =n⋅10 n+1− 10n+1 −19+ 19−∑ k=2n ∑i=1 ⌊nk⌋ gk 直接杜教篩即可。 **: #include #define ll long long using namespace std; const int mod=1000000007; const int r=100000; const int t=3000000; ll n,i9,i2; int mg[r+5],g[t+5]; ll ksm(ll a,ll b) ll solve(ll x) if(x x]=ans; return ans; }int main() printf("%lld",solve(1)); return 0;} 轉化題意,就是根據題目所給的式子定義顏色,求同色三角形的個數。有乙個經典結論 完全圖同色三角形個數 總三角形個數 異色角個數 2。因為每個異色三角形都恰有兩個異色角。在有向完全圖中結論依然成立,但這裡的異色角就要分別統計兩齣,一入一出,兩齣三種情況。我們只需要分別知道每個點進 出的紅 綠路徑數量即可... 因為a1 a 1是必須要減完的,所以我們只要求出對於ai i 2.n a i i 2.n 在a 1 a 1 減完前期望被減了多少次,最後加上a1 a 1即可。因為期望的線性性,我們只需要分別考慮每乙個ai a i即可。不妨以考慮a1 a2 a1,a2 為例。我們可以把其看成二維平面上的乙個點 a 1...include#include
聯合集訓6 9 El 點分治 雜湊表
聯合集訓6 11 期望題