题意:求所有长度为n的01串中满足如下条件的二元组个数:
设第i位和第j位分别位ai和aj(i<j),则ai=1,aj=0。
答案对1e9+7取模。
思路:从n个位置中选二个位置,左边一个为1,右边一个为0,其余位置随便(2的(n-2)次方),则每一种情况都有一个二元组,由于一次只计算了选中的二个位置,所以无重复。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 1000000007
ll fun(ll n, ll k)
{
n=n%inf;
ll s=1;
while(k)
{
if(k&1)
{
s=sn%inf;
}
n=nn%inf;
k=k/2;
}
return s;
}
int main()
{
ll n;
scanf("%lld",&n);
ll k=((n%inf)((n-1)%inf)/2)%inf;
ll z=kfun(2,n-2)%inf;
printf("%lld\n",z);
return 0;
}