题目描述
若数列A存在位置k,满足
①i<k,ai<ai+1
②i>=k,ai>ai+1
则称该数列为单峰数列
给出正整数n,求全排列n中存在多少个单峰数列
输入
给出1个正整数n
输出
单峰数列个数(对10^9+7取模)
输入样例复制
3
输出样例复制
4
说明
20%:n<=10
50%:n<=10^5
100%:2<=n<=10^18
题解
答案为 Cn-10+……+Cn-1n-1
也就是 2n-1
Code
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cmath>
#define LL long long
#define ull unsigned LL
#define db double
#define ldb long db
#define re register
#define INF 1000000009
using namespace std;
const int N=1e6+100,M=2020,mod=1e9+7;
LL n;
LL ksm ( LL x,LL y )
{
LL k=1;
for ( ;y;y>>=1 ) { if ( y&1 ) k=k*x%mod;x=x*x%mod; }
return k;
}
int main ( )
{
scanf ( "%lld",&n );
printf ( "%lld",ksm ( 2,n-1 ) );
return 0;
}