SHU 413 - 添加好友

时间:2021-05-12 14:29:08

题目链接:http://acmoj.shu.edu.cn/problem/413/

不难发现,这题是求C(n,1)+C(n,2)+C(n,3)+……+C(n,n-1)+C(n,n)

根据二项展开式有(a+b)^n = C(n,0) * (a^n) * (b^0) + …… + C(n,n) * (a^0) * (b^n)

故,令a=b=1,有C(n,0) + …… + C(n,n) = 2^n,故C(n,1)+C(n,2)+C(n,3)+……+C(n,n-1)+C(n,n) = 2^n-1

因此这题就很简单了

 #include<cstdio>
#define MOD 1000000007
typedef long long ll;
ll n;
ll pow(ll a,ll b){
ll r=,base=a%MOD;
while(b){
if(b&) r*=base , r%=MOD;
base*=base;
base%=MOD;
b>>=;
}
return r;
}
int main()
{
while(scanf("%lld",&n)!=EOF)
{
printf("%lld\n",(pow(,n)-)%MOD);
}
}