链接:https://ac.nowcoder.com/acm/problem/14731
来源:牛客网
题面
求所有长度为的
串中满足如下条件的二元组个数:
设第i位和第j位分别位和
(
),则
。 答案对
取模。
考虑一对和
在多少情况下可以出现,即是这对
和
的贡献 钦定两个位置,剩下随便选,
再考虑钦定哪两个位置,
相乘即得
#include <bits/stdc++.h>
#define ri int
#define ll long long
using namespace std;
const ll Mod=1e9+7;
inline ll ksm(ll a,ll b) {
ll ans=1;
while(b) {
if(b&1)ans=ans*a%Mod;
a=a*a%Mod;
b>>=1;
}
return ans;
}
ll n;
int main() {
scanf("%lld",&n);
if(n==1)return !printf("0\n");
if(n==2)return !printf("1\n");
printf("%lld\n",ksm(2,n-3)*(n%Mod)%Mod*((n-1)%Mod)%Mod);
return 0;
}

京公网安备 11010502036488号