标签:题目 span fine bsp ret printf while get .sh
题目链接: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
因此这题就很简单了
1 #include<cstdio> 2 #define MOD 1000000007 3 typedef long long ll; 4 ll n; 5 ll pow(ll a,ll b){ 6 ll r=1,base=a%MOD; 7 while(b){ 8 if(b&1) r*=base , r%=MOD; 9 base*=base; 10 base%=MOD; 11 b>>=1; 12 } 13 return r; 14 } 15 int main() 16 { 17 while(scanf("%lld",&n)!=EOF) 18 { 19 printf("%lld\n",(pow(2,n)-1)%MOD); 20 } 21 }
标签:题目 span fine bsp ret printf while get .sh
原文地址:http://www.cnblogs.com/dilthey/p/7142564.html