输入
复制3
3
输出
复制3
3
说明
合法的方案如下: 小a:(1, 2) 小b: (2, 3) 小a:(1, 3) 小b: (2, 3) 小a:(1, 2) 小b: (1, 3)
示例2
输入
复制4
4
输出
复制30
30
示例3
输入
复制2
2
输出
复制0
0
示例4
输入
复制10000
10000
输出
复制68735934
68735934
示例5
输入
复制1
1
输出
复制0
0
备注:
对于100%的数据1⩽n⩽1e13;
我们整合一下题目的条件可以得到,A和B都至少有两个元素,且最少有一个相同,至少有一个不同
一共n的元素,我们可以先选出A的元素,然后在A中选一些元素作为公共元素,然后在A未选的元素中选择给B
可以得到公式
详细步骤:
我们注意到公式中存在除法操作,且我们需要mod,所以用逆元来算
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e8+7;
int ksm(int x,int y){
x%=mod;
int res=1;
while(y){
if(y&1) res=res*x%mod;
x=x*x%mod;
y/=2;
}
return res%mod;
}
signed main(){
int n;
cin>>n;
cout<<((ksm(4,n)-1-ksm(3,n+1)+mod)%mod*ksm(2,mod-2)+3*ksm(2,n-1))%mod;
}