51nod 1778 小Q的集合

2021-09-30 14:02:30 字數 3455 閱讀 9789

原題連線

題目繞了一點。並沒有直接給出數字形式。

而且這個題有好像有很多方法。

我也yy了乙個(不過還是題解多效率高)。

題目中是給定了乙個集合

s 並且有 ∣∣

s∣∣=

n 要說明的是。這個集合是沒有重複元素的集合。(這一點很重要)

其實不特別說明。一般集合也都沒有重複元素。

集合s的子集數量等價於 從 s 中取元素的取法數量。(高中數學)x=

∑i=0

n(ni

)=1i

∗1n−

i(ni

)=(1

+1)n

=2n那麼我們對所有子集進行編號。 記第i個子集為 ti

因為集合沒有重複元素。 那麼有:

任意 t

i 都一一對應 乙個 補。即:s−

ti也就是有:∑i

=1x∣

∣ti∣

∣=∑i

=1x∣

∣s−t

i∣∣

更一般的:∑i

=1xf

(ti)

=∑i=

1xf(

s−ti

)

那麼。令原題中的期望為

e :xe

=2ne

=∑i=

1x[f

(ti)

−f(s

−ti)

]=∑i

=1xf

(ti)

−∑i=

1xf(

s−ti

)=∑i

=1xf

(ti)

−∑i=

1xf(

ti)=

0 所以。方差

v 也就有:an

swer

=2nv

=xv=

xσ2=

∑i=1

x[f(

ti)−

f(s−

ti)−

e]2=

∑i=1

x[f(

ti)−

f(s−

ti)]

2 我們更加注意集合元素的數量。而對於包含

i 個元素的集合數量是:(n

i)所以:an

swer

=∑i=

0n[i

k−(n

−i)k

]2(n

i)%m

對於這個和式是否有封閉形式。 我不知道。不過有就是結論提了。哈哈.

令 :g(i

)=[i

k−(n

−i)k

]2(n

%mi%

m)在 m

odm 的意義下(盧卡斯定理)an

swer

=∑i=

0ng(

i)(⌊

nm⌋⌊

im⌋)

觀察g(i

) 有:g(

i+m)

=[(i

+m)k

−(n−

(i+m

))k]

2=g(

i)(m

odm)

記 :s=∑

i=0n

g(i)

記:s(l,r

)=∑i

=lrg

(i)i

>m或

者i<0時

g(i)

=0則有:ans

wer=

∑i=0

ng(i

)(⌊n

m⌋⌊i

m⌋)=

∑i=0

⌊nm⌋

∑b=0

m−1[

g(im

+b)(

⌊nm⌋

i)]−

s(n%

m+1,

n+1)

其中∑b=0m

−1[g

(im+

b)(⌊

nm⌋i

)]=(

⌊nm⌋

i)∑b

=0m−

1g(i

m+b)

=(⌊n

m⌋i)

s

漂亮 。這樣就有:∑i

=0⌊n

m⌋∑b

=0m−

1[g(

im+b

)(⌊n

m⌋i)

=s∑i

=0⌊n

m⌋(⌊

nm⌋i

)=s∗

2⌊nm

哈哈哈哈:an

swer

=s∗2

⌊nm⌋

−s(n

%m+1

,n+1

)

這是乙個很簡潔的答案。 但是由於快速冪 比較耗時間。 要細心些哦。

當然。我們必須要結合費馬小定理來進一步優化:a(

p−1)

=1(m

odp)

因為m為素數,所以:

下面是**:

#include 

#define maxn 1000005

typedef long long ll;

ll n,m,k,r;

ll pow(ll,int);

ll clat_divie();// 計算n/m 返回餘數,商 儲存在n

void init();//預處理逆元

ll g[maxn];

int s[maxn];

ll c[maxn];

ll ivn[maxn];

ll po[maxn];

char s[maxn];

int n[maxn],size;

int main ()

}for(int i=0;i<=m;i++)

int m=(int)m-1;

for(int i=(int)m;i>-1;i--)

ll tmp=0;

m--;

for(int i=0;i*10+n[i];

if(tmp>=m) tmp%=

m; }

m++;

ll ans=(ll)s[0]*pow(2,(int)tmp)%m;

ans-=(ll)s[r+1];

if(ans<0)ans+=m;

printf("%lld\n",(ans<<1)%m);

return0;}

void init()

ll pow(ll a,int b)

return tmp;

}ll clat_divie()

size++;

}bool flag=true;

for(int i=0;iif(n[i]>0)

if(flag)size=0;

return tmp;

}

51nod 1742 開心的小Q

我們由於莫比烏斯函式如果有平方數因子就是0,那麼我們可以列出這樣的式子 sum sum 1 mu d 然後列舉倍數 sum sum rfloor 1 mu d sum f lfloor frac rfloor f x 就表示1 x有多少數有平方因子 可以用容斥得到 f n n sum mu i lf...

51nod 歡樂手速場C 開心的小Q

開心的小q tangjz 命題人 quailty 測試 基準時間限制 1 秒 空間限制 131072 kb 分值 80 如果乙個數字存在乙個約數是完全平方數,那麼小q就認為這個數是有趣的。小q喜歡收集有趣的數字,每找到乙個有趣的數,小q就會變得很開心。小q發現12是有趣的,18也是有趣的,它們都是3...

51nod 1742 開心的小Q 莫比烏斯函式

題解 分析 完全是看著題解還想半天才會做的。糾正乙個錯誤,題解中的f n 和s n 中都應該是取整而不是下取整.首先s n 的式子不難想到,問題就在於資料範圍太大,強求會t掉.換一下求和順序,列舉i d,再列舉d,就可以將原式變形成乙個對f n 求和的式子,然後從1到n中,f i 有重複,只需要計算...