luogu P3414 SAC#1 - 组合数(组合数学)
题意
求sigma(C(n,i))其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数。
由于答案可能很大,请输出答案对6662333的余数。
(n<=1018)
题解
其实就是一个快速幂。2n-1
为什么呢。
因为可以考虑假设当前要求n的答案。
对于每一个n-1个数的选择情况。你都可以通过对第n个数到底选还是不选来形成一个合法情况。
所以答案为2n-1
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 const long long mod=6662333; 8 long long n; 9 long long ksm(long long x,long long b){ 10 long long tmp=1; 11 while(b){ 12 if(b&1){ 13 tmp=(tmp*x)%mod; 14 } 15 b>>=1; 16 x=(x*x)%mod; 17 } 18 return tmp; 19 } 20 int main(){ 21 scanf("%lld",&n); 22 printf("%lld",ksm(2,n-1)); 23 return 0; 24 }