[Luogu 3414]SAC#1 - 组合数

Description

辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!

今天他萌上了组合数。现在他很想知道simga(C(n,i))是多少;其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数。

由于答案可能很大,请输出答案对6662333的余数。

Input

输入仅包含一个整数n。

Output

输出一个整数,即为答案。

Sample Input

3

Sample Output

4

Hint

对于20%的数据,n <= 20;

对于50%的数据,n <= 1000;

对于100%的数据,n <= 1 000 000 000 000 000 000 (10^18)

题解

1、
2、
3、
证明:由
当$a = b = 1$时,代入二项式定理可证明$1$式;
当$a = -1$,$b = 1$时代入二项式定理可证明$2$式;代入$a = 1$,$b = -1$可得到另一个意义相同的式子;
$(1式+2式) \over 2$可证明$3$式。
 1 //It is made by Awson on 2017.10.12
 2 #include <set>
 3 #include <map>
 4 #include <cmath>
 5 #include <ctime>
 6 #include <cmath>
 7 #include <stack>
 8 #include <queue>
 9 #include <vector>
10 #include <string>
11 #include <cstdio>
12 #include <cstdlib>
13 #include <cstring>
14 #include <iostream>
15 #include <algorithm>
16 #define LL long long
17 #define Min(a, b) ((a) < (b) ? (a) : (b))
18 #define Max(a, b) ((a) > (b) ? (a) : (b))
19 #define sqr(x) ((x)*(x))
20 using namespace std;
21 const int MOD = 6662333;
22 
23 int quick_pow(int a, LL b) {
24     int sum = 1;
25     while (b) {
26         if (b&1) sum = (LL)sum*a%MOD;
27         b >>= 1;
28         a = (LL)a*a%MOD;
29     }
30     return sum;
31 }
32 void work() {
33     LL n;
34     scanf("%lld", &n);
35     printf("%d\n", quick_pow(2, n-1));    
36 }
37 int main() {
38     work();
39     return 0;
40 }

 

posted @ 2017-10-12 22:20  NaVi_Awson  阅读(794)  评论(0编辑  收藏  举报