原題連線
題目繞了一點。並沒有直接給出數字形式。
而且這個題有好像有很多方法。
我也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 有重複,只需要計算...