题目大意 解题思路 枚举一个最高点,把其它数分成两组排好序放好就可以了。 ans=∑ni=1Cin=2n−1 。 code #include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LF double #define LL long long #define max(a,b) ((a>b)?a:b) #define min(a,b) ((a>b)?b:a) #define fo(i,j,k) for(int i=j;i<=k;i++) #define fd(i,j,k) for(int i=j;i>=k;i--) using namespace std; int const maxn=50,inf=2147483647; LL n,mod=1000000007; int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%lld",&n);n--; LL ans=1,t=2; for(;n;){ if(n%2)ans=(ans*t)%mod; t=(t*t)%mod; n/=2; } printf("%lld",ans); return 0; }