洛谷P3414 SAC#1 - 组合数

洛谷P3414 SAC#1 - 组合数

题目描述

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

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

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

输入输出格式

输入格式:

输入仅包含一个整数n。

输出格式:

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

输入输出样例

输入样例#1: 复制
3
输出样例#1: 复制
4

说明

对于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$式。

代码

又复习了一下二项式定理。

#include<cstdio>
using namespace std;
const long long mo=6662333;
long long ksm(long long a,long long p){
    if(p<0) return 0; long long res=1; a%=mo; //这儿要先对a取模
    for(;p;p>>=1,a=a*a%mo) if(p&1) res=res*a%mo;
    return res;
}
int main(){
    long long n; scanf("%lld",&n);
    printf("%lld",ksm(2,n-1));
    return 0;
}
    

 

posted @ 2017-11-07 19:22  沐灵_hh  阅读(182)  评论(0编辑  收藏  举报