注释:
(
a
+
b
)
n
=
∑
i
=
0
n
a
i
b
n
−
i
C
n
i
\small (a+b)^n=\large\sum\limits_{i=0}^{n}\small a^ib^{n-i}C_n^i
(a+b)n=i=0∑naibn−iCni,本章用到
{
a
=
1
b
=
1
\small\begin{cases} \ a=1\\ \ b=1\\ \end{cases}
{a=1b=1与
{
a
=
2
b
=
1
\small\begin{cases} \ a=2\\ \ b=1\\ \end{cases}
{a=2b=1与
{
a
=
1
b
=
2
\small\begin{cases} \ a=1\\ \ b=2\\ \end{cases}
{a=1b=2的特殊情况
解决思路:由题意不难看出集合
A
,
B
\small A,B
A,B的个数都不能为
1
\small 1
1或
n
\small n
n
(
1
,
n
\small (1,n
(1,n的时候肯定相互包含
)
\small )
) 直接枚举加推导就好 考虑
A
\small A
A,先从
n
\small n
n个景点挑出
i
\small i
i个,即:
∑
i
=
2
n
−
1
C
n
i
\large\sum\limits_{i=2}^{n-1}\small C_n^i
i=2∑n−1Cni 再来考虑
B
\small B
B,为了满足条件,只要
B
\small B
B在
A
\small A
A中挑出大于等于
1
\small 1
1个景点,并且在
A
\small A
A的补集中挑出大于等于
1
\small 1
1个景点即可。 注意:
B
\small B
B不能把
A
\small A
A中所有的元素挑出,不然会包含的。
B
\small B
B在
A
\small A
A中:
∑
j
=
1
i
−
1
C
i
j
\large\sum\limits_{j=1}^{i-1}\small C_i^{j}
j=1∑i−1Cij
B
\small B
B在
A
\small A
A的补集中:
∑
k
=
1
n
−
i
C
n
−
i
k
\large\sum\limits_{k=1}^{n-i}\small C_{n-i}^{k}
k=1∑n−iCn−ik 推导
∴
∑
i
=
2
n
−
1
C
n
i
∑
j
=
1
i
−
1
C
i
j
∑
k
=
1
n
−
i
C
n
−
i
k
\small\therefore\large\sum\limits_{i=2}^{n-1}\small C_n^i\large\sum\limits_{j=1}^{i-1}\small C_i^{j}\large\sum\limits_{k=1}^{n-i}\small C_{n-i}^{k}
∴i=2∑n−1Cnij=1∑i−1Cijk=1∑n−iCn−ik
=
∑
i
=
2
n
−
1
C
n
i
∑
j
=
1
i
−
1
C
i
j
(
∑
k
=
0
n
−
i
C
n
−
i
k
−
C
n
−
i
0
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\large\sum\limits_{j=1}^{i-1}\small C_i^{j}\small(\large\sum\limits_{k=0}^{n-i}\small C_{n-i}^{k}-C_{n-i}^0)
=i=2∑n−1Cnij=1∑i−1Cij(k=0∑n−iCn−ik−Cn−i0)
=
∑
i
=
2
n
−
1
C
n
i
∑
j
=
1
i
−
1
C
i
j
(
2
n
−
i
−
1
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\large\sum\limits_{j=1}^{i-1}\small C_i^{j}\small(2^{n-i}-1)
=i=2∑n−1Cnij=1∑i−1Cij(2n−i−1)
=
∑
i
=
2
n
−
1
C
n
i
(
∑
j
=
0
i
C
i
j
−
C
i
0
−
C
i
i
)
(
2
n
−
i
−
1
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\small(\large\sum\limits_{j=0}^{i}\small C_i^{j}-C_i^0-C_i^i)\small(2^{n-i}-1)
=i=2∑n−1Cni(j=0∑iCij−Ci0−Cii)(2n−i−1)
=
∑
i
=
2
n
−
1
C
n
i
(
2
i
−
2
)
(
2
n
−
i
−
1
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\small(2^i-2)\small(2^{n-i}-1)
=i=2∑n−1Cni(2i−2)(2n−i−1)
=
∑
i
=
2
n
−
1
C
n
i
(
2
n
−
2
i
−
2
×
2
n
−
i
+
2
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\small(2^n-2^i-2\times2^{n-i}+2)
=i=2∑n−1Cni(2n−2i−2×2n−i+2)
=
∑
i
=
2
n
−
1
C
n
i
(
2
n
+
2
−
2
i
−
2
×
2
n
−
i
)
\small=\large\sum\limits_{i=2}^{n-1}\small C_n^i\small(2^n+2-2^i-2\times2^{n-i})
=i=2∑n−1Cni(2n+2−2i−2×2n−i)
=
(
2
n
+
2
)
∑
i
=
2
n
−
1
C
n
i
−
∑
i
=
2
n
−
1
2
i
C
n
i
−
2
∑
i
=
2
n
−
1
2
n
−
i
C
n
i
\small=\small(2^n+2)\large\sum\limits_{i=2}^{n-1}\small C_n^i-\large\sum\limits_{i=2}^{n-1}\small2^i\small C_n^i-2\large\sum\limits_{i=2}^{n-1}\small2^{n-i}\small C_n^i
=(2n+2)i=2∑n−1Cni−i=2∑n−12iCni−2i=2∑n−12n−iCni
=
(
2
n
+
2
)
(
∑
i
=
0
n
C
n
i
−
C
n
0
−
C
n
1
−
C
n
n
)
−
(
∑
i
=
0
n
2
i
C
n
i
−
2
0
C
n
0
−
2
1
C
n
1
−
2
n
C
n
n
)
−
2
(
∑
i
=
0
n
2
n
−
i
C
n
i
−
2
n
C
n
0
−
2
n
−
1
C
n
1
−
2
0
C
n
n
)
\small=\small(2^n+2)(\large\sum\limits_{i=0}^{n}\small C_n^i-C_n^0-C_n^1-C_n^n)-(\large\sum\limits_{i=0}^{n}\small2^i\small C_n^i-2^0C_n^0-2^1C_n^1-2^nC_n^n)-2(\large\sum\limits_{i=0}^{n}\small2^{n-i}\small C_n^i-2^nC_n^0-2^{n-1}C_n^1-2^0C_n^n)
=(2n+2)(i=0∑nCni−Cn0−Cn1−Cnn)−(i=0∑n2iCni−20Cn0−21Cn1−2nCnn)−2(i=0∑n2n−iCni−2nCn0−2n−1Cn1−20Cnn)
=
(
2
n
+
2
)
(
2
n
−
n
−
2
)
−
(
3
n
−
1
−
2
n
−
2
n
)
−
2
(
3
n
−
2
n
−
n
2
n
−
1
−
1
)
\small=\small(2^n+2)(2^n-n-2)-(3^n-1-2n-2^n)-2(3^n-2^n-n2^{n-1}-1)
=(2n+2)(2n−n−2)−(3n−1−2n−2n)−2(3n−2n−n2n−1−1)
=
4
n
−
1
−
3
×
3
n
+
3
×
2
n
\small=\small4^n-1-3\times3^n+3\times 2^n
=4n−1−3×3n+3×2n 由于
(
A
,
B
)
,
(
B
,
A
)
\small (A,B),(B,A)
(A,B),(B,A)是同一种方案
∴
a
n
s
=
4
n
−
1
−
3
×
3
n
+
3
×
2
n
2
\small \therefore ans\small=\large\frac{4^n-1-3\times3^n+3\times 2^n}{2}
∴ans=24n−1−3×3n+3×2n
a
n
s
=
4
n
−
1
−
3
×
3
n
2
+
3
×
2
n
−
1
\small ~~~~ans=\large\frac{4^n-1-3\times3^n}{2}\small+3\times2^{n-1}
ans=24n−1−3×3n+3×2n−1 分母直接快速幂求解逆元就好
AC代码
//优化#pragma GCC optimize(2)//C#include<string.h>#include<stdio.h>#include<stdlib.h>#include<math.h>//C++#include<unordered_map>#include<algorithm>#include<iostream>#include<istream>#include<iomanip>#include<climits>#include<cstdio>#include<string>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>//宏定义#define N 1010#define DoIdo main//#define scanf scanf_s#define it set<ll>::iterator#define TT template<class T>//定义+命名空间typedeflonglong ll;typedefunsignedlonglong ull;const ll mod =1e8+7;const ll INF =1e18;constint maxn =1e6+10;usingnamespace std;//全局变量//函数区
ll max(ll a, ll b){return a > b ? a : b;}
ll min(ll a, ll b){return a < b ? a : b;}
ll quick_pow(ll a, ll b){
ll res =1; a %= mod;while(b){if(b &1){
res =(res * a)% mod;}
a =(a * a)% mod;
b >>=1;}return res;}//主函数intDoIdo(){
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);
ll n;
cin >> n;
ll ans2 =(3*quick_pow(2, n -1))% mod;
ll ans1 =((quick_pow(4, n)-1-quick_pow(3, n +1))% mod + mod)*quick_pow(2, mod -2);
cout <<(ans1 + ans2)% mod;return0;}//分割线---------------------------------QWQ/*
*/