逆序对

逆序对

https://ac.nowcoder.com/acm/problem/14731

题意:求所有长度为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=n
n%inf;
k=k/2;
}
return s;
}

int main()
{
ll n;
scanf("%lld",&n);
ll k=((n%inf)((n-1)%inf)/2)%inf;
ll z=k
fun(2,n-2)%inf;
printf("%lld\n",z);
return 0;
}

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务