博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数论(Lucas定理) HDOJ 4349 Xiao Ming's Hope
阅读量:4634 次
发布时间:2019-06-09

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

 

题意:求C (n,0),C (n,1),C (n,2)...C (n,n)中奇数的个数

分析:Lucas 定理:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  mod p同。即:Lucas (n,m,p)=C (n%p,m%p) * Lucas (n/p,m/p,p) 

我是打表找规律的,就是: 2^二进制下1的个数。这定理可以求  

收获:1. 没思路时一定要打个表找找规律 2. Lucas定理

 

代码:

/************************************************* Author        :Running_Time* Created Time  :2015-8-27 8:48:05* File Name     :J.cpp ************************************************/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1typedef long long ll;const int N = 1e5 + 10;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int main(void) { int n; while (scanf ("%d", &n) == 1) { int cnt = 0; while (n) { if (n & 1) cnt++; n >>= 1; } ll ans = 1; for (int i=1; i<=cnt; ++i) ans *= 2; printf ("%I64d\n", ans); } return 0;}

  

转载于:https://www.cnblogs.com/Running-Time/p/4764360.html

你可能感兴趣的文章
Python元组&字典
查看>>
ubi实际使用
查看>>
curl命令使用
查看>>
PYTHON自动化Day12-unittest自动注册登录
查看>>
为 Asp.net 网站新增发送手机短信功能
查看>>
hdu 1002大数(Java)
查看>>
CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
查看>>
NOIP2005普及组第4题 循环
查看>>
xbmc-12.0稳定版代码初探 (2) —— XBMC_HOME
查看>>
Java GC 日志详解
查看>>
MySQL主主配置说明
查看>>
[建议] GCC 新手入门【转】
查看>>
AC日记——[Hnoi2017]影魔 bzoj 4826
查看>>
Python:通过一个小案例深入理解IO多路复用
查看>>
自定义View圆
查看>>
min stack
查看>>
Golang的接口
查看>>
《Java虚拟机规范》阅读(三):Class文件格式
查看>>
django中间件
查看>>
Linux Exploit系列之三 Off-By-One 漏洞 (基于栈)
查看>>