1. 程式人生 > >[Luogu 3414]SAC#1 - 組合數

[Luogu 3414]SAC#1 - 組合數

clu ima cin com typedef -1 ont std 技術

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 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 typedef long long lol;
 7 lol n,Mod=6662333
; 8 lol qpow(lol x,lol y) 9 { 10 lol res=1; 11 while (y) 12 { 13 if (y&1) res=res*x%Mod; 14 x=x*x%Mod; 15 y=y/2; 16 } 17 return res; 18 } 19 int main() 20 { 21 cin>>n; 22 printf("%lld\n",qpow(2,n-1)); 23 }

[Luogu 3414]SAC#1 - 組合數