博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3414 SAC#1 - 组合数
阅读量:4965 次
发布时间:2019-06-12

本文共 1327 字,大约阅读时间需要 4 分钟。

P3414 SAC#1 - 组合数

\[\sum_{i = 0,2 | i}^{n}C_{n}^{i}\] 其中 n <= 1 000 000 000 000 000 000 (10^18)

Solution

这题评级有毒吧。。码量少可是包含知识点和推导方法不简单的呀

推导才是精华

复习一下 二项式定理\[(a + b)^{n} = \sum_{k = 0}^{n}C_{n}^{k}a^{k}b^{n - k}\]

引理: \[\sum_{i = 0,2 | i}^{n}C_{n}^{i} = 2^{n - 1}\]
证明:
\(a = 1, b = 1\) 带入二项式定理, 得①式:\[2^{n} = \sum_{i = 0}^{n}C_{n}^{i}\]
\(a = -1, b = 1\) 带入二项式定理, 得②式: \[(1 - 1)^{n} = \sum_{i = 0, i \% 2 == 0}^{n}C_{n}^{i} - \sum_{i = 0, i \% 2 == 1}^{n}C_{n}^{i} = 0\]
①式 + ②式, 得③式: \[2\sum_{i = 0,2 | i}^{n}C_{n}^{i} = 2^{n} + 0 = 2^{n}\]
解得:\[\sum_{i = 0,2 | i}^{n}C_{n}^{i} = 2^{n - 1}\]
证毕。

快速幂解决问题

Code

#include
#include
#include
#include
#include
#include
#define LL long long#define REP(i, x, y) for(LL i = (x);i <= (y);i++)using namespace std;LL RD(){ LL out = 0,flag = 1;char c = getchar(); while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();} while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();} return flag * out; }const LL M = 6662333;LL p;LL Q_pow(LL a, LL p){ LL ret = 1; while(p){ if(p & 1)ret = ret * a % M; a = a * a % M; p >>= 1; } return ret; }int main(){ p = RD(); printf("%lld\n", Q_pow(2, p - 1)); return 0; }

转载于:https://www.cnblogs.com/Tony-Double-Sky/p/9794421.html

你可能感兴趣的文章
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
组件:slot插槽
查看>>
走进C++程序世界------异常处理
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>